Cascade, Specificity, and Inheritance
Predict which declaration wins instead of fighting the cascade with increasingly strong selectors.
Plusieurs déclarations peuvent viser la même propriété d’un élément. La cascade les départage selon leur origine, leur importance, leur couche, la spécificité du sélecteur et leur ordre dans le code. L’héritage transmet ensuite certaines propriétés, comme la couleur du texte, du parent à l’enfant. Organiser les couches est généralement plus facile à maintenir que multiplier les !important.
Comprendre l’ordre des couches
Repérez les couches déclarées dans cet exemple et les règles qu’elles contiennent. Avant de modifier le code, cherchez quel critère permet de départager deux déclarations concurrentes.
@layer reset, base, components, utilities;
@layer base {
a { color: #617713; }
}
@layer components {
.button { color: #10231f; }
}
@layer utilities {
.muted { color: #64716d; }
}Les bons réflexes
- Examinez le style calculé avant d’ajouter une règle de remplacement.
- Gardez une spécificité aussi faible que possible pour le besoin réel.
- Organisez les couches, des styles de base aux utilitaires plus ciblés.
L’erreur à éviter
Ajouter !important dès qu’une règle ne s’applique pas masque souvent un problème de priorité. Les modifications suivantes deviennent plus difficiles parce qu’il faut aussi composer avec ces déclarations prioritaires.