: css

les règles de priorité en cas de conflit de valeurs

la cascade

Le terme de cascade apparaît dans le nom du langage css. C'est une notion importante pour comprendre quelle valeur va être appliquée lorsqu'il y a conflit, qu'elle est définie plusieurs fois.

Les style css sont définis à plusieurs niveaux, dans l'ordre, du moins au plus prioritaire:

les déclaration des feuilles de style intégrée ou styles insérés dans le <head> écraseront les styles du navigateur. Si plusieurs déclarations se contredisent dans les fichiers css ou le head le style déclaré en dernier dans la page html l'emportera. Les feuilles de styles seront elles-mêmes écrasées par d'éventuelles nouvelles valeurs décrites "en ligne", dans les éléments html. Enfin, l'utilisateur peut écraser n'importe quelle valeur à l'aide de ses propres réglages.

agent utilisateur < l'auteur < utilisateur

Il y a cependant 2 points à prendre en compte, qui peuvent perturber l'ordre de cascade:

La spécificité du sélecteur

La règle de cascade n'est appliquée qu'à spécificité égale des sélecteurs. Un sélecteur est construit à l'aide de noms d'élément, de classe, d'ID, de pseudo-classes,... Certains sélecteurs ont plus de poids que d'autre et donc, ils surpasseront des déclarations de moindre poids.

Pour déterminer la spécificité:

Exemple:

#content  nav li a.on:hover {
 color: red;
}

1 ID (#content), 2 classe+pseudo-classe (.on :hover), 3 éléments (nav li a) => 123

Il surpassera ce sélecteur:

nav.verte li.gras a.on:hover {
 color: green;
}

0 ID, 4 classe+pseudo-classe (.on :hover .verte .gras), 3 éléments (nav li a) => 33

mais pas celui-ci:

#content #nav a {
 color: red;
}

2 ID, 0 classe+pseudo-classe, 1 éléments (a) => 200

Important: on peut augmenter la spécificité d'un sélecteur en répétant, par exemple, un nom d'id:

#content#content nav a {
 color: red;
}

Cela peut s'avérer utile lors de redéfinitions des style pour une version mobile, par exemple.

La déclaration !important

L'ajout d'un !important, entre la valeur et le ; permet de surpasser les règles de cascade et de spécificité (pour autant qu'il n'y ait pas d'autres valeurs comportant un !important auquel cas, on retrouve les règles de cascade et spécificités appliquées):

#content nav a {
 color: red !important;
}
Editer