Retour aux leçons
Scrollytelling

Flexbox vs Grid

Quand utiliser chaque système de layout

Deux systèmes de layout

CSS offre deux systèmes de layout puissants : Flexbox et CSS Grid. Les deux résolvent des problèmes de mise en page, mais de manière différente.

  Flexbox : layout UNIdimensionnel (ligne OU colonne)
  Grid :    layout BIdimensionnel (lignes ET colonnes)

  ┌─────────────┐     ┌──────┬──────┬──────┐
  │ A │ B │ C   │     │  A   │  B   │  C   │
  └─────────────┘     ├──────┼──────┼──────┤
  Ligne Flexbox       │  D   │  E   │  F   │
                      └──────┴──────┴──────┘
                      Grille (lignes & colonnes)

Forces de Flexbox

Flexbox excelle dans les layouts guidés par le contenu où la taille des éléments détermine la mise en page. Idéal pour les barres de navigation, le centrage et la distribution d'espace.

Parfait pour : la navigation
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
Parfait pour : le centrage
.center {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Forces de Grid

Grid excelle dans les designs guidés par la mise en page où vous définissez d'abord la structure puis placez les éléments dedans.

Parfait pour : la mise en page
.page {
  display: grid;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
  grid-template-columns: 250px 1fr;
  min-height: 100vh;
}
Parfait pour : grille de cards responsive
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
}

Côte à côte

  Fonctionnalité    Flexbox         Grid
  ──────────────────────────────────────────
  Dimensions        1D              2D
  Guidé contenu     ✓ Excellent     Possible
  Guidé layout      Possible        ✓ Excellent
  Alignement        ✓ Deux axes     ✓ Deux axes
  Gap               ✓ gap           ✓ gap
  Zones nommées     ✗               ✓ grid-template-areas
  Chevauchement     Difficile       Facile
  Support navigat.  ✓ Tous modernes ✓ Tous modernes
  ──────────────────────────────────────────

Les combiner

Les meilleurs layouts combinent souvent les deux systèmes. Utilisez Grid pour la structure générale de la page, et Flexbox pour les layouts de composants individuels.

Grid pour la page, Flexbox pour les composants
/* Layout page avec Grid */
.page {
  display: grid;
  grid-template-columns: 1fr 3fr;
  gap: 24px;
}

/* Navigation dans la sidebar avec Flexbox */
.sidebar nav {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

Résumé

Flexbox pour les composants

Barres de navigation, groupes de boutons, centrage de contenu et tout arrangement unidimensionnel.

Grid pour les layouts

Structure de page, grilles de cards, tableaux de bord et tout layout bidimensionnel nécessitant un contrôle précis.

Combinez-les librement

Grid et Flexbox sont complémentaires. Utilisez Grid pour le macro-layout et Flexbox pour les micro-layouts dans les cellules de grille.