Guide complet de CSS Flexbox : maitrisez les layouts flexibles en 2026
Apprenez CSS Flexbox depuis zero. Conteneur flex, alignement, grow, shrink, basis et modeles utiles comme le centrage, la navbar, la grille de cartes et le holy grail layout.
Qu'est-ce que CSS Flexbox et pourquoi il faut le maitriser
CSS Flexbox est un modele de layout unidimensionnel pense pour distribuer l'espace et aligner des elements dans un conteneur de maniere fiable. Il simplifie des problemes historiques du CSS qui demandaient autrefois des hacks avec floats ou positionnement.
Flexbox est ideal pour centrer, espacer, reordonner visuellement et rendre des composants plus responsives avec peu de code. C'est pour cela qu'il reste indispensable en frontend moderne.
- Centrage vertical et horizontal avec quelques proprietes
- Distribution souple des elements selon l'espace disponible
- Comportement responsive plus naturel pour de nombreux composants
Pour tester les exemples au fil de la lecture, ouvrez notre playground Flexbox.
Le conteneur flex : display flex et l'axe principal
Tout commence quand le parent recoit display: flex. Les enfants directs deviennent alors des flex items.
Par defaut, ils se placent en ligne horizontale, ne passent pas a la ligne suivante, commencent au debut de l'axe principal et s'etirent sur l'axe croise.
| Valeur | Axe principal | Direction |
|---|---|---|
row | Horizontal | Gauche vers droite |
row-reverse | Horizontal | Droite vers gauche |
column | Vertical | Haut vers bas |
column-reverse | Vertical | Bas vers haut |
flex-wrap gere le retour a la ligne. Le raccourci flex-flow combine direction et wrap.
Proprietes d'alignement : justify-content et align-items
justify-content aligne sur l'axe principal, tandis que align-items aligne sur l'axe croise.
| Propriete | Effet |
|---|---|
justify-content: center | Centre sur l'axe principal |
space-between | Repartit l'espace entre les items |
align-items: center | Centre sur l'axe croise |
align-items: stretch | Etire les items |
Quand plusieurs lignes existent, align-content devient utile. Pour creer un espace propre entre items, gap est la solution la plus simple.
Proprietes des items flex : grow, shrink et basis
Les proprietes des items determinent la maniere dont chaque element occupe l'espace.
- flex-grow : croissance quand il reste de l'espace
- flex-shrink : reduction quand l'espace manque
- flex-basis : taille de base avant redistribution
Le raccourci flex permet de tout regrouper. flex: 1 cree un item flexible, flex: none le rend rigide, et flex: 0 0 250px fixe une taille precise.
align-self sert a ajuster un item particulier, et order change son ordre visuel sans modifier le HTML.
Schemas courants : centrage, navbar et sticky footer
Flexbox est parfait pour les modeles recurrents d'interface.
- Centrage complet :
display: flex; justify-content: center; align-items: center; - Navbar :
justify-content: space-betweenpour separer logo et menu - Sticky footer : wrapper en colonne avec
min-height: 100vhet contenu principal enflex: 1 - Dernier element a droite :
margin-left: auto - Sidebar + contenu : sidebar fixe et zone principale flexible
Vous pouvez verifier ces cas dans notre playground Flexbox.
Grille de cartes responsive et holy grail layout
Pour une grille responsive, le schema classique est display: flex; flex-wrap: wrap; gap: 24px; sur le conteneur et flex: 1 1 300px; sur les cartes. Chaque carte garde ainsi une largeur raisonnable tout en restant flexible.
Le holy grail layout combine header, footer, sidebars et contenu principal. Un wrapper vertical gere la hauteur totale, puis la zone centrale devient elle-meme un conteneur flex.
- Wrapper :
display: flex; flex-direction: column; min-height: 100vh; - Zone centrale :
display: flex; flex: 1; - Sidebar :
flex: 0 0 200px; - Contenu :
flex: 1;
Flexbox vs CSS Grid : quand utiliser l'un ou l'autre
Flexbox est ideal pour les layouts unidimensionnels. CSS Grid est plus adapte lorsqu'il faut gerer lignes et colonnes en meme temps.
- Utilisez Flexbox pour navbars, cartes, formulaires et alignements internes
- Utilisez Grid pour la structure generale d'une page ou une grille complexe
| Aspect | Flexbox | Grid |
|---|---|---|
| Dimension | 1D | 2D |
| Force | Alignement | Structure |
| Usage | Composants | Mise en page |
Dans un projet reel, les deux se completent tres bien. Testez cela dans le playground Flexbox et le generateur CSS Grid.
Erreurs frequentes et astuces avancees avec Flexbox
Quelques erreurs reviennent souvent :
- Oublier que flex-shrink vaut 1 par defaut
- Utiliser width au lieu de flex-basis
- Ne pas mettre min-width: 0 quand un texte doit etre tronque
- Forcer une vraie grille 2D avec Flexbox
Astuces utiles :
- margin-left: auto pousse un item a l'autre bout
- flex: 1 1 0% partage souvent l'espace plus egalement
- Les conteneurs flex imbriques sont tres pratiques
- order change l'ordre visuel, pas l'ordre de lecture pour l'accessibilite
Pour pratiquer, utilisez notre playground interactif Flexbox.
Essayez cet outil :
Ouvrir l'outil→Questions fréquentes
Quelle est la difference entre justify-content et align-items ?
justify-content aligne les elements sur l'axe principal, tandis que align-items les aligne sur l'axe croise. Avec flex-direction: row, cela correspond en general a horizontal pour justify-content et vertical pour align-items.
Que fait exactement flex: 1 ?
flex: 1 equivaut generalement a flex-grow: 1, flex-shrink: 1 et flex-basis: 0%. L'element grandit, peut retrecir si besoin et partage l'espace disponible avec les autres items flexibles.
Comment centrer une div verticalement et horizontalement avec Flexbox ?
Sur le parent, appliquez display: flex; justify-content: center; align-items: center;. Il faut aussi que le conteneur ait une hauteur definie, par exemple min-height: 100vh.
Flexbox ou Grid : lequel apprendre en premier ?
Flexbox. Il est plus simple, tres utile dans les composants et constitue une bonne base avant de passer a CSS Grid.
Pourquoi mes elements flex ne reviennent-ils pas a la ligne ?
Parce que la valeur par defaut de flex-wrap est nowrap. Ajoutez flex-wrap: wrap; pour autoriser le retour a la ligne.
Puis-je utiliser Flexbox et CSS Grid dans le meme projet ?
Oui. C'est meme souvent l'approche recommandee : Grid pour la structure globale de la page, Flexbox pour l'alignement interne des composants.