Je souhaite cibler toutes les balises h d'une page. Je sais que tu peux le faire de cette façon ...
h1,
h2,
h3,
h4,
h5,
h6 {
font: 32px/42px trajan-pro-1,trajan-pro-2;
}
mais y a-t-il un moyen plus efficace de le faire en utilisant des sélecteurs CSS avancés? par exemple quelque chose comme:
[att^=h] {
font: 32px/42px trajan-pro-1,trajan-pro-2;
}
(mais évidemment cela ne fonctionne pas)
css
css-selectors
SparrwHawk
la source
la source
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, ...
Réponses:
Non, une liste séparée par des virgules est ce que vous voulez dans ce cas.
la source
h1, h2, h3 {}
.Ce n'est pas un css basique, mais si vous utilisez LESS ( http://lesscss.org ), vous pouvez le faire en utilisant la récursivité:
Sass ( http://sass-lang.com ) vous permettra de gérer cela, mais n'autorisera pas la récursivité; ils ont une
@for
syntaxe pour ces instances:Si vous n'utilisez pas un langage dynamique qui se compile en CSS comme LESS ou Sass, vous devriez certainement vérifier l'une de ces options. Ils peuvent vraiment simplifier et dynamiser votre développement CSS.
la source
"can" != "should"
. Même ainsi, les options Sass / LESS vous offrent une extensibilité que le CSS vanille ne fait pas. Pensez à quelque chose commefont-size: (48px / @index)
.scss/sass
dans leur projet, mais qui souhaitent générercss
avecscss/sass
elles peuvent utiliser cet outil en ligne appelé sassmeisterSi vous utilisez SASS, vous pouvez également utiliser ce mixin:
Utilisez-le comme ceci:
Modifier: Ma façon préférée de le faire en étendant éventuellement un sélecteur d'espace réservé sur chacun des éléments de titre.
Ensuite, je peux cibler tous les en-têtes comme je ciblerais n'importe quelle classe unique, par exemple:
la source
!optional
drapeau sur l'extension cependant? Et ne semble pas trouver quoi que ce soit sur google ...SCSS + Compass en fait un jeu d'enfant, puisque nous parlons de pré-processeurs.
Vous pouvez en savoir plus sur tous les sélecteurs d'aide Compass ici :
la source
Stylus l » interpolation de sélection
la source
Le sélecteur jQuery pour toutes les balises h (h1, h2, etc.) est ": header". Par exemple, si vous souhaitez rendre toutes les balises h de couleur rouge avec jQuery, utilisez:
la source
$('.my_div :header').css("color","red")
?Pour résoudre ce problème avec du CSS vanille, recherchez des modèles dans les ancêtres des
h1..h6
éléments:Si vous pouvez repérer des motifs, vous pourrez peut-être écrire un sélecteur qui cible ce que vous voulez. Compte tenu de l'exemple ci-dessus, tous les
h1..h6
éléments peuvent être ciblés en combinant les:first-child
et les:not
pseudo-classes de CSS3, disponibles dans tous les navigateurs modernes, comme ceci:Dans le futur, les sélecteurs de pseudo-classes avancés comme
:has()
, et les combinateurs ultérieurs (~
), offriront encore plus de contrôle à mesure que les normes Web continueront d'évoluer au fil du temps.la source
Vous pouvez également utiliser PostCSS et le plugin de sélecteurs personnalisés
Production:
la source
Vous pouvez .classer tous les titres de votre document si vous souhaitez les cibler avec un seul sélecteur, comme suit,
et dans le css
Je ne dis pas que c'est toujours la meilleure pratique, mais cela peut être utile, et pour cibler la syntaxe, plus facile à bien des égards,
donc si vous donnez à tous les h1 à h6 la même classe .heading dans le html, vous pouvez les modifier pour tous les documents html qui utilisent cette feuille css.
à la hausse, contrôle plus global par rapport à "section div article h1, etc {}",
inconvénient, au lieu d'appeler tous les sélecteurs en place dans le css, vous aurez beaucoup plus de saisie dans le html, mais je trouve qu'avoir une classe dans le html pour cibler tous les en-têtes peut être bénéfique, faites juste attention à la priorité dans le css, car des conflits peuvent survenir
la source
La nouvelle
:is()
pseudo-classe CSS peut le faire dans un seul sélecteur:la source