Apprenez à prédire quelle règle CSS l'emporte grâce à la spécificité, et à exploiter l'héritage pour écrire moins de code.
Ouvrir cette leçon dans KodokonVous écrivez une règle, vous rechargez la page… et rien ne change. Dans la majorité des cas, le coupable n'est pas un bug : c'est la cascade. Quand plusieurs règles ciblent le même élément, le navigateur les départage dans cet ordre : l'origine de la règle (styles du navigateur, puis les vôtres), la spécificité du sélecteur, et enfin l'ordre d'apparition dans le code. Maîtriser ce mécanisme vous évitera des heures de débogage.
p {
color: gray;
}
.article p {
color: navy;
}La spécificité se calcule comme un score à trois chiffres : (identifiants, classes, éléments). #menu vaut 1-0-0, .nav-link vaut 0-1-0, a vaut 0-0-1. On compare de gauche à droite : #menu (1-0-0) bat .nav .link .active (0-3-0), même avec trois classes. Exercice mental : qui gagne entre header nav a (0-0-3) et .main-link (0-1-0) ? La classe, car une classe pèse plus lourd que n'importe quel nombre d'éléments.
header nav a {
color: steelblue;
}
.main-link {
color: crimson;
}L'héritage est votre allié pour écrire moins de code : les propriétés liées au texte (color, font-family, font-size, line-height) se transmettent automatiquement aux descendants. Les propriétés de boîte (margin, padding, border, width) ne s'héritent pas - heureusement, sinon chaque enfant recevrait la bordure de son parent. Définissez donc votre typographie une seule fois, au plus haut niveau.
body {
font-family: "Inter", sans-serif;
color: #1f2937;
line-height: 1.6;
}#intro { color: red; } puis .text { color: blue; }. Quelle couleur s'applique ?