Générateur de CSS Grid

Ajustez grid-template-columns/rows, justify-items, align-items et gap via une interface graphique interactive et prévisualisez de vraies mises en page CSS Grid en temps réel. Copiez le CSS généré en un clic.

Astuces d'utilisation

  • L'unité fr dans grid-template-columns: repeat(3, 1fr) représente une part de l'espace restant, si bien que le rapport entre les colonnes reste constant même si la largeur de la fenêtre change.
  • La propriété gap n'affecte que l'espacement entre les lignes et les colonnes, contrairement à margin qui affecte aussi l'extérieur de la grille. Vous pouvez aussi définir row-gap et column-gap séparément.
  • Les pistes définies sur "auto" s'adaptent à la taille réelle de leur contenu, ce qui est pratique pour des colonnes ou des lignes dont la longueur du contenu est imprévisible.
  • En surchargeant grid-column: span 2 sur un seul élément, vous pouvez faire en sorte que seul l'en-tête ou le pied de page s'étende sur toute la largeur de la grille.
  • Utilisez Grid lorsque vous avez besoin d'une mise en page bidimensionnelle complète, et Flexbox lorsqu'une seule ligne ou colonne d'éléments suffit (voir aussi notre générateur de CSS Flexbox).

Questions fréquentes

Utilisez CSS Grid lorsque vous devez contrôler à la fois les lignes et les colonnes, comme pour l'ossature générale d'une page ou un tableau de bord. Utilisez Flexbox lorsqu'une seule direction (une ligne ou une colonne) d'éléments suffit, comme une barre de navigation ou une rangée de cartes. De nombreuses pages combinent les deux : Grid pour l'ossature générale, Flexbox à l'intérieur des composants.

fr signifie "fraction" et représente une part de l'espace restant à l'intérieur du conteneur. Par exemple, grid-template-columns: 1fr 2fr répartit l'espace de sorte que la deuxième colonne soit deux fois plus large que la première. Contrairement à une unité absolue comme px, les pistes en fr conservent leur rapport lorsque le conteneur change de taille.

repeat() est une notation abrégée permettant de répéter le même motif de piste plusieurs fois, si bien que repeat(3, 1fr) équivaut à écrire grid-template-columns: 1fr 1fr 1fr. Cette écriture reste concise même lorsque le nombre de colonnes est important ou change dynamiquement, puisqu'il suffit d'indiquer le nombre de répétitions et la taille de la piste.

La mise en page "holy grail" (saint graal) est une structure de page web classique combinant un en-tête, une barre latérale, un contenu principal et un pied de page. Avant CSS Grid, elle nécessitait des contournements complexes à base de float ou de balises de tableau, mais des propriétés comme grid-template-areas permettent de la reproduire en seulement quelques lignes de CSS.

grid-column: span N fait qu'un élément s'étend horizontalement sur N pistes (colonnes). Par exemple, attribuer grid-column: span 3 uniquement à l'élément d'en-tête lui permet d'occuper toute la largeur d'une grille à 3 colonnes, tandis que les autres éléments restent dans leurs cellules normales (grid-row accepte la même syntaxe span).
ツールくん

Anecdote — la "seconde dimension" que CSS Grid vise et que Flexbox ne couvre pas

CSS Grid Layout a été conçu comme un système de mise en page bidimensionnel permettant de définir simultanément des lignes et des colonnes, contrairement à Flexbox, qui se concentre sur l'agencement d'éléments dans une seule direction. Sa normalisation au sein du W3C a débuté vers 2011, et lorsque Chrome, Firefox, Safari et Edge ont implémenté sa prise en charge quasi simultanément en 2017, son adoption dans des projets réels s'est rapidement accélérée.

Avant l'existence de Grid, organiser une page selon la structure classique "holy grail" — en-tête, barre latérale, contenu principal et pied de page — nécessitait des contournements complexes reposant sur float ou des balises de tableau. CSS Grid a introduit des propriétés déclaratives telles que grid-template-columns, grid-template-rows et grid-template-areas, permettant de recréer cette mise en page familière en seulement quelques lignes de CSS.

Aujourd'hui, une grande partie du travail de conception derrière les interfaces de tableau de bord, les galeries d'images et les mises en page façon magazine, organisées autour de lignes et de colonnes, est réalisée avec CSS Grid. La prise en charge de "subgrid", qui permet à une grille imbriquée d'hériter du dimensionnement des pistes de sa grille parente, s'est également répandue dans les principaux navigateurs, facilitant le maintien de la cohérence dans des mises en page complexes à plusieurs niveaux.

En pratique, une convention s'est imposée : Grid gère l'ossature générale de la page, tandis que Flexbox gère l'agencement des éléments à l'intérieur de chaque composant. Les deux ne sont pas des technologies concurrentes, mais des outils complémentaires, chacun adapté à une force différente (alignement unidimensionnel contre placement bidimensionnel en grille), et les combiner au sein d'une même page est considéré comme une pratique standard.