C'est quoi CSS Grid ?
CSS Grid est un système de mise en page bidimensionnel. Contrairement à Flexbox qui travaille sur un seul axe (à la fois), Grid gère lignes ET colonnes en même temps.
Flexbox vs Grid : utilisez Flexbox pour aligner des éléments dans une direction (navbar, liste de cartes). Utilisez Grid pour créer une mise en page complète (header + sidebar + contenu + footer).
Colonnes et lignes
On active Grid avec display: grid, puis on définit la structure :
grid-template-columns: 1fr 1fr 1fr: 3 colonnes de taille égalegrid-template-columns: 200px 1fr: sidebar fixe + contenu flexiblegrid-template-rows: auto 1fr auto: header + contenu extensible + footer
L'unité fr (fraction) répartit l'espace disponible. 1fr 2fr donne 1/3 + 2/3 de la largeur.
gap: 16px ajoute de l'espace entre les cellules (comme en Flexbox).
Placement des items
Chaque item peut s'étendre sur plusieurs colonnes ou lignes :
grid-column: 1 / 3: de la colonne 1 à la colonne 3 (occupe 2 colonnes)grid-column: span 2: occupe 2 colonnes (même résultat)grid-row: 1 / 3: occupe 2 lignes
grid-template-areas : le pouvoir visuel
La propriété la plus intuitive de Grid. Vous dessinez littéralement votre mise en page :
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
Chaque élément se place ensuite avec grid-area: header.
What is CSS Grid?
CSS Grid is a two-dimensional layout system. Unlike Flexbox which works on one axis at a time, Grid handles rows AND columns simultaneously.
Flexbox vs Grid: use Flexbox to align elements in one direction (navbar, card list). Use Grid to create complete layouts (header + sidebar + content + footer).
Columns and rows
Activate Grid with display: grid, then define the structure:
grid-template-columns: 1fr 1fr 1fr— 3 equal-size columnsgrid-template-columns: 200px 1fr— fixed sidebar + flexible contentgrid-template-rows: auto 1fr auto— header + expandable content + footer
The fr unit (fraction) distributes available space. 1fr 2fr gives 1/3 + 2/3 of the width.
gap: 16px adds space between cells (just like Flexbox).
Placing items
Each item can span multiple columns or rows:
grid-column: 1 / 3— from column 1 to column 3 (spans 2 columns)grid-column: span 2— spans 2 columns (same result)grid-row: 1 / 3— spans 2 rows
grid-template-areas: visual power
The most intuitive Grid property. You literally draw your layout:
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
Each element then places itself with grid-area: header.
Pour pratiquer CSS Grid de manière ludique, essayez :
CSS Grid Garden : https://cssgridgarden.com/ : Un jeu gratuit pour apprendre CSS Grid en arrosant votre jardin de carottes.
L'IA a utilisé grid-template-columns: 1fr 1fr alors qu'on voulait 3 colonnes égales pour les cartes. Corrigez pour obtenir 3 colonnes.
Tu demandes à l'IA une galerie de 3 cartes par ligne. Elle te répond ça. Ton rôle de relecteur : accepter tel quel ou rejeter, et dire pourquoi.
.gallery {
display: grid;
grid-template-columns: 300px 300px 300px;
gap: 16px;
}
300px figées font 900px + gaps : sur un téléphone (375px de large) la galerie déborde et provoque un scroll horizontal. Le réflexe Grid : grid-template-columns: repeat(3, 1fr) pour 3 colonnes qui se partagent l'espace, ou mieux repeat(auto-fit, minmax(200px, 1fr)) pour que le nombre de colonnes s'adapte tout seul à la largeur. Les px fixes sur les colonnes sont l'anti-pattern Grid le plus courant.Sans remonter dans la leçon : qu'est-ce qui distingue Grid de Flexbox, et que vaut grid-template-columns: 1fr 2fr pour la répartition de la largeur ?
fr est une fraction de l'espace disponible : 1fr 2fr découpe la largeur en 3 parts et donne 1/3 à la première colonne, 2/3 à la seconde.1fr ?You can now build grid layouts. But they also have to fit on a phone screen. In the next lesson we make all of it adaptive with responsive design: media queries, relative units and grids that rearrange themselves based on screen size.
Lesson 7: Responsive design →