Adloun

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

Des zones qui ne marchent pas

Grid · niveau 2

Énoncé

La page code/ch8/erreurs/zones-invalides.html devait afficher un en-tête, un contenu, un encadré et un pied de page. Tous les éléments s'empilent au même endroit, dans une étroite colonne à droite.


.page {
  display: grid;
  grid-template-areas:
    "entete entete entete"
    "contenu contenu encadre"
    "contenu pied pied";
  grid-template-columns: 1fr 1fr 200px;
  gap: 10px;
  width: 760px;
}

(les éléments reçoivent grid-area: entete, contenu, encadre et pied). Expliquer l'erreur, puis pourquoi les éléments se retrouvent tous dans une même cellule. Proposer une correction.

Corrigé

La zone contenu occupe les cellules (2,1), (2,2) et (3,1) : c'est un L, pas un rectangle. Toute la déclaration grid-template-areas est donc invalide et ignorée : l'onglet Computed affiche none, et l'onglet Styles barre la déclaration avec un triangle d'avertissement. Le vérificateur stylelint le signale aussi (named-grid-areas-no-invalid).

Pourquoi l'empilement ? Les éléments demandent toujours grid-area: entete… mais la grille ne connaît plus aucune ligne de ce nom. Dans ce cas, le navigateur fait comme si une ligne de ce nom existait après la dernière ligne de la grille explicite : il crée des colonnes implicites, et tous les éléments se retrouvent dans la même cellule supplémentaire, à droite. Correction : donner à chaque zone une forme rectangulaire, par exemple


.page {
  grid-template-areas:
    "entete  entete  entete"
    "contenu contenu encadre"
    "pied    pied    pied";
}

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 →