1. Introduction : organiser des blocs sur une page
Pour organiser les éléments sur une page (mettre des blocs côte à côte, faire des colonnes, centrer du contenu…), on utilise surtout deux outils CSS :
- Flexbox : idéal pour aligner une rangée ou une colonne d’éléments
- Grid : idéal pour faire une grille (tableau) de lignes + colonnes
Dans les deux cas, on transforme un bloc “parent” en conteneur d’organisation, puis on y place des “enfants” qu’on va aligner.
<div class="conteneur">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
Ensuite, on choisit en CSS comment on organise ces éléments (en ligne, en grille, espacés, centrés…).
Avec Flexbox (en ligne)
.conteneur {
display: flex;
gap: 10px;
}
Avec Grid (en 3 colonnes)
.conteneur {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
2. Créer un conteneur et ses enfants (la boîte à chaussures)
Pour que Flexbox ou Grid fonctionne, on a besoin de deux choses :
- un conteneur (le parent) : la “boîte” qui contient les éléments,
- des enfants : les éléments à organiser à l’intérieur (images, blocs, etc.).
📦 La balise <div> = une boîte
On utilise très souvent la balise <div> pour créer un conteneur.
C’est comme une boîte vide dans laquelle on va ranger des éléments.
<div class="boite-images">
<img src="image1.jpg" alt="Image 1">
<img src="image2.jpg" alt="Image 2">
<img src="image3.jpg" alt="Image 3">
</div>
Ici :
<div class="boite-images">: c’est le conteneur (le parent),- les 3 balises
<img>: ce sont les enfants à organiser.
👟 L’analogie de la boîte à chaussures
Imagine que tu mets 3 photos dans une boîte à chaussures. Tu vas indiquer sur la boite comment les photos sont placées dedans, tu ne vas pas l'indiquer sur chaque photo.
En CSS, c’est pareil :
c’est sur la boîte (le conteneur) qu’on applique les propriétés
display: flex;, display: grid;, gap, etc.
🧪 Exemple : 3 images organisées avec Flexbox
HTML :
<div class="boite-images">
<img src="https://via.placeholder.com/60" alt="Image 1">
<img src="https://via.placeholder.com/60" alt="Image 2">
<img src="https://via.placeholder.com/60" alt="Image 3">
</div>
CSS :
.boite-images {
display: flex; /* on active Flexbox sur le conteneur */
gap: 10px; /* espace entre les images */
}
👉 On ne met pas display: flex; sur les images directement,
mais sur la <div> qui les contient.
Ici, la “boîte” (le parent) aligne les 3 images (les enfants) en ligne.
🧩 À retenir absolument
- On crée un conteneur (souvent une
<div>). - On met dedans les éléments à organiser (images, blocs, etc.).
- On applique Flexbox ou Grid sur le conteneur, pas sur chaque enfant.
- Les propriétés comme
display: flex;,display: grid;,gaps’écrivent dans le CSS du conteneur.
2. Propriétés communes (display, gap…)
Flexbox et Grid partagent des propriétés communes pour organiser les blocs. Voici les plus importantes :
| Mot clé | Écriture CSS | Rôle | Exemple |
|---|---|---|---|
| Activer Flexbox | display: flex; |
Transforme un conteneur en boîte Flexbox. Les enfants sont alignés selon un axe (ligne ou colonne). |
1
2
3
|
| Activer Grid | display: grid; |
Transforme un conteneur en grille (lignes + colonnes). On définit ensuite le nombre de colonnes/lignes. |
1
2
3
|
| Espace entre les éléments | gap: 10px; |
Ajoute un espace entre les éléments, sans marges. Fonctionne avec display: flex; et display: grid;.
|
1
2
3
|
3. Flexbox : aligner en ligne ou en colonne
Flexbox est très pratique pour aligner des éléments sur un axe principal (en ligne ou en colonne), puis les centrer ou les répartir.
| Mot clé | Écriture CSS | Rôle | Exemple |
|---|---|---|---|
| Direction |
flex-direction: row;flex-direction: column;
|
Choisit la direction des éléments : row = en ligne (gauche → droite) column = en colonne (haut → bas) |
row (en ligne) 1
2
3
column (en colonne) 1
2
3
|
| Alignement sur l’axe principal |
justify-content: center;justify-content: space-between;
|
Place les éléments le long de l’axe principal (horizontal si row). center : au centre space-between : espaces égaux entre les éléments |
center 1
2
3
space-between 1
2
3
|
| Alignement sur l’autre axe | align-items: center; |
Aligne les éléments sur l’axe secondaire (vertical si row). center : centre verticalement. |
1
2
3
|
4. Flexbox : retour à la ligne et flex-grow
| Mot clé | Écriture CSS | Rôle | Exemple |
|---|---|---|---|
| Retour à la ligne | flex-wrap: wrap; |
Autorise les éléments à passer à la ligne suivante si la place manque. |
1
2
3
4
5
6
Réduis la largeur de la fenêtre pour voir l’effet. |
| Faire grandir un élément | flex-grow: 1; |
Indique qu’un élément peut prendre plus de place que les autres sur l’axe principal. |
1
2 (grow)
3
|
5. Grid : créer une grille de colonnes
Avec Grid, on commence souvent par définir combien de colonnes on veut.
| Mot clé | Écriture CSS | Rôle | Exemple |
|---|---|---|---|
| Colonnes de la grille |
grid-template-columns: 1fr 1fr 1fr;grid-template-columns: repeat(3, 1fr);
|
Définit le nombre et la taille des colonnes. fr = fraction de l’espace disponible. repeat(3, 1fr) = 3 colonnes de même taille. |
1
2
3
4
5
6
|
| Colonnes mixtes |
grid-template-columns: 200px 1fr;
|
Première colonne fixe (200px), deuxième colonne qui prend le reste de la place. |
Menu
Contenu
|
6. Grid : placer et aligner les éléments
Grid permet aussi d’aligner les éléments à l’intérieur des cellules.
| Mot clé | Écriture CSS | Rôle | Exemple |
|---|---|---|---|
| Alignement dans les cellules |
justify-items: center;align-items: center;
|
justify-items : aligne horizontalement dans la cellule. align-items : aligne verticalement dans la cellule. |
1
2
3
|
| Placer un élément (bonus simple) |
grid-column: 1 / 3;grid-row: 1 / 3;
|
Permet à un élément d’occuper plusieurs colonnes ou lignes. Ici, de la colonne 1 à 3 (sans inclure 3). |
Large
A
B
C
|
7. Tableau récapitulatif Flexbox / Grid
| Situation | Flexbox | Grid |
|---|---|---|
| Aligner des éléments en ligne ou en colonne | 👍 Très adapté (menus, barres, blocs en rangée) | Possible mais moins naturel |
| Créer une grille de cartes (plusieurs lignes + colonnes) | Possible, mais un peu limité | 👍 Idéal (galerie d’images, cards…) |
| Centrer un bloc dans une page | Très simple avec Flexbox | Possible |
| Maquette complexe (gabarit de page entier) | Peut devenir compliqué | 👍 Très pratique pour grandes mises en page |
À retenir : Flexbox = aligner des éléments sur un axe (ligne/colonne). Grid = organiser la page en grille (lignes + colonnes).