Placer deux blocs l'un à côté de l'autre a longtemps été le cauchemar du web. Trois lignes de CSS suffisent aujourd'hui.
Les éléments bloc s'empilent verticalement : chacun prend toute la largeur et pousse le suivant vers le bas. C'est pratique pour un texte, mais impossible pour une barre de navigation ou trois cartes côte à côte.
Pendant quinze ans, les développeurs ont contourné le problème avec des bricolages. Puis Flexbox est arrivé.
À la fin de ce cours, tu seras capable de :
gap.justify-content.align-items.C'est le point qui déroute au début. On ne dit pas aux éléments de se ranger : on dit au conteneur de prendre la main sur ses enfants.
<nav>
<a href="#">Introduction</a>
<a href="#">Les virus</a>
<a href="#">Phishing</a>
</nav>
nav {
display: flex;
gap: 25px;
}
La règle porte sur nav, le parent — pas sur nav a. Dès qu'un conteneur passe en display: flex, ses enfants directs se rangent sur une ligne horizontale, et c'est lui qui décide de leur placement.
⚠️ Attention :
display: flexn'agit que sur les enfants directs. Un élément situé deux niveaux plus bas n'est pas concerné.
nav {
display: flex;
gap: 25px;
}
gap fixe l'espace entre les enfants. Une seule ligne, et plus besoin de bricoler des marges sur chaque élément — ni de se demander quoi faire du dernier, qui ne doit pas avoir de marge à droite.
💡 Astuce :
gapne s'applique qu'entre les éléments, jamais sur les bords du conteneur. Pour de l'air autour, c'est lepaddingdu conteneur.
Une fois le conteneur en flex, justify-content décide de la répartition horizontale.

| Valeur | Effet |
|---|---|
flex-start |
Tout à gauche — c'est le comportement par défaut |
center |
Groupés au centre |
flex-end |
Tout à droite |
space-between |
Le premier à gauche, le dernier à droite, l'espace réparti entre eux |
nav {
display: flex;
gap: 25px;
justify-content: center;
background-color: SteelBlue;
padding: 12px;
}
space-between est celui qu'on utilise pour un en-tête de site : le logo à gauche, le menu à droite, et rien à calculer.
Chacune de ces mises en page demandait autrefois des heures de tâtonnement. Aujourd'hui, c'est un mot à changer.
justify-content place les éléments sur la ligne. align-items les place en travers de la ligne, c'est-à-dire verticalement.
nav {
display: flex;
align-items: center;
}
C'est ce qui permet à un logo haut de 40 pixels et à un menu haut de 20 pixels d'être alignés sur leur milieu plutôt que sur leur bord supérieur.
| Valeur | Effet |
|---|---|
stretch |
Les enfants s'étirent sur toute la hauteur — par défaut |
center |
Alignés sur leur milieu |
flex-start |
Alignés en haut |
flex-end |
Alignés en bas |
🧠 À retenir :
justify-contentagit dans le sens de la ligne,align-itemsen travers. Les deux se combinent, etalign-items: centerest de loin la valeur la plus utilisée.
Trois cartes tiennent côte à côte sur un ordinateur, pas sur un téléphone. Par défaut, Flexbox les comprime plutôt que de les faire descendre. Une ligne corrige ça :
.cartes {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
flex-wrap: wrap autorise le passage à la ligne quand la place manque. Les cartes se réorganisent d'elles-mêmes selon la largeur de l'écran.
display: flex : le conteneur ou les enfants ?gap et le padding du conteneur ?justify-content ?align-items: center ?display: flex se pose sur le parent, et n'agit que sur ses enfants directs.gap espace les enfants entre eux, sans toucher aux bords.justify-content répartit dans le sens de la ligne : center, space-between…align-items aligne en travers, le plus souvent avec center.flex-wrap: wrap autorise le passage à la ligne sur les petits écrans.Tu as toutes les pièces. Reste à les assembler en une page complète — et à fabriquer le motif le plus répandu du web : la carte.