Flexbox en CSS : Guide Complet

Conteneur, enfants, centrage, navbar, cartes responsive — tout maîtriser avec des exemples concrets

10
Sections
20+
Exemples
2026
Mis à jour

SECTION 01

Le principe de Flexbox

📐 Conteneur + Items

Flexbox fonctionne avec un conteneur (le parent) et des items (les enfants directs). Quand tu appliques display: flex au parent, tous ses enfants se placent automatiquement en ligne.


class=« conteneur »>
class=« item »>A

class=« item »>B

class=« item »>C

 

 

/* CSS */
.conteneur

🧭 Les deux axes
AxeDirection par défautContrôlé par
Axe principal (main axis)Horizontal (→)justify-content
Axe secondaire (cross axis)Vertical (↓)align-items

L'axe principal change si tu utilises flex-direction: column — dans ce cas, l'axe principal devient vertical et l'axe secondaire horizontal.

SECTION 02

Propriétés du conteneur (parent)

↔️ flex-direction
.conteneur
↔️ justify-content (axe principal)
ValeurEffet
flex-startTous à gauche (défaut)
flex-endTous à droite
centerCentrés
space-betweenRépartis, premier et dernier collés aux bords
space-aroundEspaces égaux autour de chaque item
space-evenlyEspaces strictement égaux partout
↕️ align-items (axe secondaire)
ValeurEffet
stretchItems prennent toute la hauteur (défaut)
flex-startCollés en haut
flex-endCollés en bas
centerCentrés verticalement
baselineAlignés sur la ligne de base du texte
🔄 flex-wrap + gap
/* flex-wrap : passer à la ligne */
.conteneur

/* gap : espace ENTRE les items (pas autour) */
.conteneur

gap est la façon moderne de gérer l'espacement — plus besoin de margins. Supporté partout depuis 2021.

SECTION 03

Propriétés des enfants (items)

📏 flex-grow, flex-shrink, flex-basis
PropriétéRôleDéfaut
flex-growCombien l'item grandit pour remplir l'espace libre0
flex-shrinkCombien l'item rétrécit si l'espace manque1
flex-basisTaille de base avant répartitionauto
/* Raccourci : flex: grow shrink basis */
.item /* flex: 1 1 0% — prend l'espace dispo */
.item /* taille fixe 200px, ne bouge pas */
.item /* 2x plus d'espace que flex: 1 */
🎯 align-self + order
/* align-self : aligner UN item différemment */
.special

/* order : changer l'ordre d'affichage */
.premier /* apparaît en premier */
.dernier /* apparaît en dernier */

SECTION 04

Centrer un élément avec Flexbox

🎯 3 lignes pour centrer parfaitement
/* Centrage horizontal + vertical */
.parent

/* Alternative : margin auto sur l'enfant */
.parent
.enfant /* centré dans les deux axes */

Pas de transform: translate(-50%, -50%), pas de margin bizarre — juste 3 propriétés. Voir aussi notre fiche Centrer un élément en CSS.

.card

Chaque carte fait au minimum 300px. S'il y a de l'espace, elles grandissent. S'il n'y a plus de place, elles passent à la ligne. Zéro media query.

SECTION 07

6 patterns Flexbox à connaître

PatternCode CSSUsage
Centrerdisplay:flex; justify-content:center; align-items:centerModales, login
Navbardisplay:flex; justify-content:space-between; align-items:centerHeader de site
Footer stickybody mainFooter en bas
Sidebar + contenu.sidebar .contentDashboards
Grille de cartesflex-wrap:wrap; gap:24px; .cardListing produits
Boutons alignésdisplay:flex; gap:12px; justify-content:flex-endActions formulaire

SECTION 08

Erreurs fréquentes

ErreurProblèmeSolution
Oublier flex-wrap: wrapTout sur une ligne, items débordentAjouter flex-wrap: wrap
Margin au lieu de gapEspaces indésirables sur les bordsUtiliser gap
Centrer sans hauteuralign-items: center ne fait rienAjouter min-height au parent
Confondre align-items et align-contentRésultats imprévisibles multi-lignesalign-items = 1 ligne, align-content = multi-lignes
flex: 1 sur des imagesImages déforméesAjouter object-fit: cover

SECTION 09

Flexbox vs Grid

CritèreFlexboxGrid
Dimension1D (une ligne OU colonne)2D (lignes ET colonnes)
Idéal pourNavbar, boutons, alignementsLayouts de page, galleries
Contenu dicte la taille ?Oui — items déterminent leur tailleNon — la grille impose
Responsive sans media queryflex-wrap: wrapauto-fit + minmax()
Dernière carte solitaireS'étire sur toute la largeurReste à sa taille dans la grille

Règle simple : Flexbox pour les composants (navbar, boutons, tags). Grid pour les layouts de page et grilles de contenu. Les deux se combinent.

SECTION 10

Questions fréquentes

Flexbox est-il supporté par tous les navigateurs ?
Oui. Flexbox est supporté par tous les navigateurs modernes depuis 2015. Plus besoin de préfixes -webkit-flex. La propriété gap en Flexbox est supportée partout depuis 2021.
Peut-on imbriquer des conteneurs Flexbox ?
Oui, c'est très courant. Une navbar est un conteneur flex dont les liens sont eux-mêmes dans un conteneur flex. Un enfant flex peut aussi être un conteneur flex pour ses propres enfants.
Différence entre align-items et align-content ?
align-items aligne les items à l'intérieur de chaque ligne. align-content gère l'espace entre les lignes avec flex-wrap: wrap. Si tu n'as qu'une seule ligne, align-content n'a aucun effet.
Comment faire un footer qui reste en bas de la page ?
Le « sticky footer » : body puis main . Le contenu principal prend tout l'espace restant, le footer reste naturellement en bas.

Flexbox CSS — Guide complet avec exemples

Référence : MDN Flexbox