Si nous voulons garder la spécifité basse, ce qui est le cas, il existe une règle simple, facile et immédiate que nous pouvons respecter pour nous aider : éviter d'utiliser les Id en CSS.
Non seulement les Id sont par nature non réutilisables, mais elles sont aussi largement plus spécifiques que tout autre sélecteur, et deviennent donc des anomalies en terme de spécificité. Alors que le reste des sélecteurs conservent une spécificité très basse, les sélecteurs basés sur des Id sont comparativement beaucoup, beaucoup plus spécifique.
En fait, pour expliciter cette différence, regarder comment mille classes chaînées ne peuvent pas overrider la spécificité d'un seul ID : jsfiddle.net/0yb7rque. (Notez qu'il est possible que le texte soit rendu en bleu dans firefox, c'est un bug connu, et un Id sera overridden par 256 classes chaînées.)
N.B. Il est toujours totalement correct d'utiliser des Id en HTML et en JavaScript; c'est uniquement en CSS qu'ils se montrent problématiques.
Il est parfois suggérer que les développeurs qui choisissent de na pas utiliser d'Id dans leur CSS “ne comprennent pas comment la spécificité fonctionne”. C'est aussi incorrect que grossier : quelque soit l'expérience d'un développeur, ce comportement ne peux être contourné; aucun niveau de connaissance ne rendra les Id moins spécifiques.
Opter pour cette manière de travailler introduit uniquement des chances que les problèmes arrivent plus tard, et — particulièrement when working at scale— tous les efforts devraient être produits pour éviter que les probèmes potentiels arrivent. En une phrase :
Cela ne vaut pas le coup d'introduire le risque.