Les sélecteurs ciblent les éléments auxquels une règle s'applique. Ils vont du simple (par balise) aux puissants combinateurs.
/* Basic selectors */
p { } /* type: all <p> */
.card { }
{ }
* { }
{ }
Les sélecteurs ciblent les éléments auxquels une règle s'applique. Ils vont du simple (par balise) aux puissants combinateurs.
/* Basic selectors */
p { } /* type: all <p> */
.card { }
{ }
* { }
{ }
.menu li { } /* descendant: any li INSIDE .menu (any depth) */
.menu > li { } /* child: only DIRECT children li */
h2 + p { } /* adjacent sibling: the p immediately AFTER an h2 */
h2 ~ p { } /* general sibling: all p siblings after an h2 */
La différence entre l'espace (descendant) et > (enfant direct) est importante : .menu li correspond aussi aux lis imbriqués en profondeur, tandis que .menu > li ne correspond qu'au niveau supérieur.
a:hover { } /* state: while hovered */
li:first-child { } /* structural: the first li */
li:nth-child(2n){ } /* every even li */
p::first-line { } /* pseudo-element: the first rendered line */
h1, h2, h3 { } /* apply to all three */
:is(h1, h2) a { } /* :is() shortens long selector lists */
.card:has(img) { } /* :has() — a parent that CONTAINS an img */
Les sélecteurs sont la façon dont vous connectez les styles au balisage.
Maîtriser les classes (l'outil de base), les combinateurs (pour les relations) et les pseudo-classes structurelles/d'état vous permet de cibler précisément sans ajouter des classes supplémentaires partout — et les modernes :is()/:has() rendent le ciblage complexe concis.
Préférez les classes aux ids/imbrications lourdes pour maintenir la spécificité gérable.