Adloun

CSS : mettre en forme le Web (école d'ingénieur) · Chapitre 3 · Exercice de TD

Le bouton qui ne change pas

Cascade, spécificité et héritage · niveau 2

Énoncé


body {
  font-family: system-ui, sans-serif;
}

/* Les liens des fiches de livre */
.fiche a {
  color: #1f3a68;
}

/* Le bouton de commande */
.bouton {
  color: #222;
  background-color: #e07a1f;
}

Dans la fiche d'un livre (<article class="fiche">), le lien <a class="bouton"> reste en texte bleu nuit sur fond ocre, peu lisible. Expliquer à l'aide de la spécificité, puis proposer trois corrections sans !important ; laquelle est la meilleure ?

Corrigé

.fiche a a la spécificité , .bouton : la règle des liens de la fiche gagne la propriété color, et le fond ocre (que seule .bouton déclare) s'applique quand même. D'où le bleu nuit sur ocre, d'un contraste de 3,7:1, insuffisant (chapitre 4).

Trois corrections :

  • Renforcer le bouton : .fiche .bouton . Cela marche, mais le bouton ne fonctionnera pas ailleurs, et la surenchère commence.
  • Exclure le bouton : .fiche a:not(.bouton). La spécificité monte à , ce qui gênera la prochaine variante.
  • Affaiblir la règle de base : :where(.fiche) a, . C'est la meilleure : la règle de base cède devant n'importe quelle classe, et le composant .bouton reste indépendant de l'endroit où on le place.

body {
  font-family: system-ui, sans-serif;
}

/* Les liens des fiches de livre : la base, sans poids */
:where(.fiche) a {
  color: #1f3a68;
}

/* Le bouton de commande */
.bouton {
  color: #222;
  background-color: #e07a1f;
}

Illustration

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →