Qu'est-ce que la spécificité des sélecteurs CSS et comment fonctionne-t-elle ?
Le navigateur détermine les styles à afficher sur un élément en fonction de la spécificité des règles CSS. Nous supposons que le navigateur a déjà déterminé les règles qui correspondent à un élément particulier. Parmi les règles correspondantes, la spécificité, quatre valeurs séparées par des virgules, a, b, c, d
sont calculées pour chaque règle en fonction des éléments suivants :
a
indique si des styles en ligne sont utilisés. Si la déclaration de propriété est un style en ligne sur l'élément,a
est 1, sinon 0.b
est le nombre de sélecteurs d'ID.c
est le nombre de classes, d'attributs et de sélecteurs de pseudo-classes.d
est le nombre de balises et de sélecteurs de pseudo-éléments.
La spécificité résultante n'est pas un score, mais une matrice de valeurs qui peuvent être comparées colonne par colonne. Lors de la comparaison des sélecteurs pour déterminer lequel a la spécificité la plus élevée, regardez de gauche à droite et comparez la valeur la plus élevée de chaque colonne. Ainsi, une valeur dans la colonne b
annulera les valeurs dans les colonnes c
et d
, quoi qu'elles puissent être. Ainsi, une spécificité de 0,1,0,0
serait supérieure à celle de 0,0,10,10
.
Dans les cas de spécificité égale : la règle la plus récente est celle qui compte. Si vous avez écrit la même règle dans votre feuille de style (qu'elle soit interne ou externe) deux fois, alors la règle la plus basse dans votre feuille de style est plus proche de l'élément à styliser, elle est considérée comme plus spécifique et sera donc appliquée.
J'écrirais des règles CSS avec une faible spécificité afin qu'elles puissent être facilement remplacées si nécessaire. Lors de l'écriture de code de bibliothèque de composants d'interface utilisateur CSS, il est important qu'ils aient de faibles spécificités afin que les utilisateurs de la bibliothèque puissent les remplacer sans utiliser des règles CSS trop compliquées juste pour augmenter la spécificité ou recourir à !important
.