La grille du designer

Cet exemple est un cas particulier d’utilisation du display Grid.

L’idée va être de reproduire une grille (comme celle utilisée en design) et de placer des éléments sur celle-ci.

C’est extrêmement utile dès lors qu’un design est complexe. Au premier abord, ce n’est pas évident à comprendre, mais l’exemple présenté ici est là pour vous faciliter la tâche.

HTML

<div class="parent">
    <div class="child child-1">child-1</div>
    <div class="child child-2">child-2</div>
    <div class="child child-3">child-3</div>
</div>

CSS : Grid layout + named area

.parent {
  display: grid;
  grid-template-areas:
    "a . . . . ."
    "a . . c . ."
    ". . . . b b";
 
  gap: 1rem;
}
 
.child-1 {
  grid-area: a;
}
 
.child-2 {
  grid-area: b; /* same as grid-area: 3 / 5 / 4 / 7*/
}
 
.child-3 {
  grid-area: 2 / 4; /* same as grid-area: c; */
  grid-area: c;
}

Etape 1 : créer une grille

Exemple de grille 6*3

Représentation de la grille 6*3 (ci-dessus) en CSS :

grid-template-areas:
    "a . . . . ."
    "a . . c . ."
    ". . . . b b";

Les lettres “a”, “b”, “c”, sont les noms des zones.  Vous pouvez mettre ce que vous voulez tant que ce sont des lettres. Par exemple, à la place des “a” on aurait pu écrire “header”…

⚠ Attention : une zone est quadrilatère (on ne peut pas faire un L).

Etape 2 : placer des éléments  dessus

Dans l’exemple ci-dessous, child-1 s’affiche dans la zone « a ».

.child-1 {
  grid-area: a;
}

Il est possible de placer un élément suivant ses coordonnés (utile si vous voulez faire 2 éléments se chevaucher…).

.child-2 {
  grid-area: b; /* same as grid-area: 3 / 5 / 4 / 7*/
}
 
.child-3 {
  grid-area: 2 / 4; /* same as grid-area: c */
  grid-area: c;
}

Utiliser des zones nommées vous permet de redéfinir la grille dans une media query, sans toucher au reste (du code). Par exemple :

@media screen and (max-width: 40em) {
  .parent {
    grid-template-areas:
      "a"
      "a"
      "c"
      "b"
      "b";
  }
}

produit une grille 1*5 comme ci-dessous.

Bonus : vous ne voyez pas comment intégrer ce snippet ? Télécharger gratuitement ma CSS Layout toolbox ; c’est une collection de snippets prêtes à l’emploi.

← Retour vers la liste des mise en page