2.2 — La grille en 12 colonnes
⏱️ TL;DR — La grille Bootstrap repose sur trois niveaux :
container›row›col. Chaquerowest divisée en 12 colonnes égales.col-6prend 6/12 (la moitié) ;col-md-4prend 4/12 à partir de md. Sans nombre,colpartage l’espace restant à parts égales. C’est de la Flexbox sous le capot.
🎯 Objectifs
- Construire une grille responsive avec
rowetcol. - Utiliser les colonnes auto (
col) et à largeur définie (col-*). - Combiner plusieurs breakpoints sur une même colonne.
Le trio container / row / col
<div class="container">
<div class="row">
<div class="col">1/3</div>
<div class="col">2/3</div>
<div class="col">3/3</div>
</div>
</div>Trois col sans nombre → l’espace se divise automatiquement en trois parts égales (4 colonnes chacune).
Colonnes à largeur définie
<div class="row">
<div class="col-8">Prend 8/12</div>
<div class="col-4">Prend 4/12</div>
</div>La somme doit idéalement faire 12. Au-delà, les colonnes passent à la ligne (wrap).
Colonnes responsives
On empile les breakpoints pour changer la répartition selon la taille d’écran :
<div class="row">
<!-- pleine largeur sur mobile, moitié dès md, tiers dès lg -->
<div class="col-12 col-md-6 col-lg-4">A</div>
<div class="col-12 col-md-6 col-lg-4">B</div>
<div class="col-12 col-md-6 col-lg-4">C</div>
</div>Colonnes mixtes : une fixe, le reste auto
<div class="row">
<div class="col-3">Largeur fixe 3/12</div>
<div class="col">Prend tout le reste</div>
</div>Et col-auto dimensionne la colonne selon son contenu :
<div class="row">
<div class="col-auto">Aussi large que son texte</div>
<div class="col">Le reste</div>
</div>Grille par lignes : row-cols
Pour dire « N colonnes par ligne » sans annoter chaque enfant :
<!-- 2 colonnes par ligne sur mobile, 4 dès md -->
<div class="row row-cols-2 row-cols-md-4 g-3">
<div class="col">1</div>
<div class="col">2</div>
<div class="col">3</div>
<div class="col">4</div>
</div>⚠️ Piège — Mettre un
coldirectement dans uncontainersansrow: les marges négatives de la grille ne sont pas compensées et le contenu déborde. Toujoursrowentrecontaineretcol.
💡 Pour un dev React — En React,
row-cols-md-4est très pratique pour rendre une liste : vous mappez vos items en<div className="col">…</div>sans calculer la largeur de chacun. La grille gère le wrap toute seule.
✏️ Exercices
- Faites une grille de cartes : 1 par ligne sur mobile, 2 dès sm, 3 dès lg.
✅ Solution
<div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 g-4">
<div class="col">…</div>
<!-- répéter -->
</div>- Une sidebar fixe de 3 colonnes et un contenu qui prend le reste, quel que soit l’écran ?
✅ Solution
<div class="row">
<div class="col-3">sidebar</div>
<div class="col">contenu</div>
</div>🧠 Quiz de révision
1. En combien de colonnes une row est-elle divisée ?
row est-elle divisée ?12.
2. Que fait col (sans nombre) ?
col (sans nombre) ?Il partage l’espace disponible à parts égales avec les autres col.
3. Que fait col-auto ?
col-auto ?La colonne prend la largeur de son contenu.
4. Quelle techno CSS sous-tend la grille ?
Flexbox.
5. À quoi sert row-cols-md-3 ?
row-cols-md-3 ?À imposer 3 colonnes par ligne à partir de md, sans annoter chaque enfant.
Chapitre suivant : 2.3 — Colonnes avancées (offset, order, align)