La dernière recommandation du W3C

Tous les sélecteurs

Sélecteurs simples

* tous les éléments du document HTML (sélecteur universel)
nom_elt tous les éléments nom_elt du document HTML (sélecteur de type)
.abcd tous les éléments dont l'attribut class a la valeur abcd (sélecteur de classe)
#xyz l'élement dont l'attribut id a la valeur xyz (sélecteur d'identifiant)

Sélecteurs d'attribut

[att] élements avec un attribut att, quelque soit la valeur de cet attribut.
[att="val"] éléments avec un attribut att dont la valeur est égale à val.
[att^="val"] éléments avec un attribut att dont la valeur commence par val.
[att$="val"] éléments avec un attribut att dont la valeur finit par val.
[att*="val"] éléments avec un attribut att dont la valeur contient val.
[att~="val"] éléments avec un attribut att dont la valeur est une liste de valeurs séparées par un espace, et dont l'une de ces valeur est égale à val.
[att|="val"] éléments avec un attribut att dont la valeur est une liste de valeurs séparées par une virgule, et dont l'une de ces valeurs est égale à val.

Pseudo classe

:link élements a (liens) qui n'ont pas encore été visités.
:visited élements a (liens) qui ont déjà été visités.
:active éléments quand la souris est enfoncée.
:hover éléments survolés par la souris.
:focus éléments qui ont deviennent la cible des interactions clavier ou souris(focus).
:root racine du document, soit l'élément html
:first-child 1er enfant
:nth-child(n) n-ième enfant
:last-child dernier enfant
:nth-last-child(n) n-ième enfant en partant de la fin
:only-child éléments qui sont les seuls enfants de leur parent.
:first-of-type 1er enfant d'un certain type
:nth-of-type(n) n-ième enfant d'un certain type
:last-of-type dernier enfant d'un certain type
:nth-last-of-type(n) n-ième enfant d'un certain type, en partant de la fin
:only-of-type éléments qui sont les seuls enfants d'un certain type
:empty éléments qui n'ont pas d'enfant, y compris de noeud texte.
:target éléments qui sont les cibles d'une ancre nommée dans des liens.
:enabled zones de formulaire actives (ie avec saisie ou click possible).
:disabled zones de formulaire désactivés (ie sans saisie ou click possible).
:checked case à cocher ou bouton radio cochés.
:not(S) éléments qui ne seraient pas sélectionnés par le sélecteur simple S

Pseudo éléments

::first-line 1ère ligne du texte d'un élément
::first-letter 1ère lettre du texte d'un élément
::before insére un contenu avant un élément
::after insére un contenu après un élément

Sélecteurs composés

Les sélecteurs composés (aussi appelés sélecteurs contextuels) sont faits de plusieurs sélecteurs simples séparés par un combinateur. On peut faire le parallèle avec une opération mathématique, composées de plusieurs membres (les sélecteurs) reliés par des opérateurs (les combinateurs). Ici on ne fera pas d'opération sur des nombres, mais des combinaisons sur les éléments dans le DOM en fonction de leur place les uns par rapport aux autres dans la hiérarchie (enfants, parents, descendants, frères).

syntaxe des sélecteurs composés

La lecture des sélecteurs composés se fait de droite à gauche et les déclarations de style portent sur le sélecteur le plus à droite.
La figure précédente se lit : je cherche les éléments p qui sont enfants directs d'éléments div précédés d'éléments h3.

  S1 et S2 représentent chacun un sélecteur simple, d'attribut, de pseudo classe ou de pseudo élément
S1, S2 sélecteurs groupés : S1 et S2.
S1 S2 sélecteur de descendants : les éléments S2 qui sont descendants de S1.
S1 > S2 sélecteur d'enfants : les éléments S2 qui sont des enfants de S1.
S1 + S2 sélecteur d'adjacents direct : S1 et S2 ont le même parent, et les éléments S2 sont immédiatement précédés d'un élément S1.
S1 ~ S2 sélecteur d'adjacents indirect : S1 et S2 ont le même parent, et les éléments S2 sont précédés quelque part d'un élément S1.