Module Bootstrap.2 – Grille Bootstrap
Objectif
Maîtriser le système de grille Bootstrap : containers, rows, cols, grille responsive pour créer des layouts professionnels et adaptatifs.
Théorie
Système de grille Bootstrap
Principe : 12 colonnes flexibles et responsive.
Composants :
- Container : Conteneur principal
- Row : Ligne
- Col : Colonne
Structure de base :
<div class="container">
<div class="row">
<div class="col">Colonne 1</div>
<div class="col">Colonne 2</div>
<div class="col">Colonne 3</div>
</div>
</div>
Containers
Types de containers :
.container
Container responsive avec max-width selon breakpoint.
<div class="container">
<!-- Contenu -->
</div>
Max-widths :
- xs: 100% (pas de breakpoint)
- sm: 540px
- md: 720px
- lg: 960px
- xl: 1140px
- xxl: 1320px
.container-fluid
Container full-width (100% de la largeur).
<div class="container-fluid">
<!-- Contenu full-width -->
</div>
Containers responsives
<div class="container-sm">...</div>
<div class="container-md">...</div>
<div class="container-lg">...</div>
<div class="container-xl">...</div>
<div class="container-xxl">...</div>
Rows
.row : Ligne qui contient les colonnes.
<div class="container">
<div class="row">
<!-- Colonnes ici -->
</div>
</div>
Gutters (espacement) :
<!-- Gutter par défaut (1.5rem) -->
<div class="row">
<!-- Gutter personnalisé -->
<div class="row g-0"> <!-- Pas de gutter -->
<div class="row g-1"> <!-- Petit gutter -->
<div class="row g-2"> <!-- Gutter moyen -->
<div class="row g-3"> <!-- Grand gutter -->
<div class="row g-4"> <!-- Très grand gutter -->
<div class="row g-5"> <!-- Gutter maximum -->
Gutters verticaux :
<div class="row gy-3"> <!-- Vertical -->
<div class="row gx-4"> <!-- Horizontal -->
Colonnes
Colonnes égales
<div class="row">
<div class="col">Colonne 1</div>
<div class="col">Colonne 2</div>
<div class="col">Colonne 3</div>
</div>
<!-- 3 colonnes égales (4 colonnes chacune) -->
Colonnes avec taille
<div class="row">
<div class="col-6">6 colonnes</div>
<div class="col-6">6 colonnes</div>
</div>
<div class="row">
<div class="col-4">4 colonnes</div>
<div class="col-4">4 colonnes</div>
<div class="col-4">4 colonnes</div>
</div>
Total = 12 colonnes :
col-1àcol-12col-6= 50% (6/12)col-4= 33.333% (4/12)col-3= 25% (3/12)
Colonnes responsive
Breakpoints Bootstrap :
- xs: < 576px (pas de préfixe)
- sm: ≥ 576px
- md: ≥ 768px
- lg: ≥ 992px
- xl: ≥ 1200px
- xxl: ≥ 1400px
Syntaxe : col-{breakpoint}-{nombre}
<div class="row">
<!-- Mobile : 12 colonnes (full width) -->
<!-- Tablet : 6 colonnes (50%) -->
<!-- Desktop : 4 colonnes (33%) -->
<div class="col-12 col-md-6 col-lg-4">Colonne 1</div>
<div class="col-12 col-md-6 col-lg-4">Colonne 2</div>
<div class="col-12 col-md-6 col-lg-4">Colonne 3</div>
</div>
Explication :
col-12: Mobile (12 colonnes = 100%)col-md-6: Tablet et plus (6 colonnes = 50%)col-lg-4: Desktop et plus (4 colonnes = 33%)
Colonnes auto
<div class="row">
<div class="col-auto">Taille selon contenu</div>
<div class="col">Prend l'espace restant</div>
</div>
Colonnes avec offset
<div class="row">
<div class="col-4 offset-4">Centré (offset de 4)</div>
</div>
<div class="row">
<div class="col-4 offset-md-4">Offset seulement sur md+</div>
</div>
Exemples pratiques
Layout 2 colonnes
<div class="container">
<div class="row">
<div class="col-md-8">Contenu principal</div>
<div class="col-md-4">Sidebar</div>
</div>
</div>
Layout 3 colonnes
<div class="container">
<div class="row">
<div class="col-md-3">Sidebar gauche</div>
<div class="col-md-6">Contenu principal</div>
<div class="col-md-3">Sidebar droite</div>
</div>
</div>
Cards en grille
<div class="container">
<div class="row">
<div class="col-12 col-md-6 col-lg-4 mb-4">
<div class="card">Card 1</div>
</div>
<div class="col-12 col-md-6 col-lg-4 mb-4">
<div class="card">Card 2</div>
</div>
<div class="col-12 col-md-6 col-lg-4 mb-4">
<div class="card">Card 3</div>
</div>
</div>
</div>
Alignement
Alignement vertical
<div class="row align-items-start"> <!-- Haut -->
<div class="row align-items-center"> <!-- Centre -->
<div class="row align-items-end"> <!-- Bas -->
Par colonne :
<div class="row">
<div class="col align-self-start">Haut</div>
<div class="col align-self-center">Centre</div>
<div class="col align-self-end">Bas</div>
</div>
Alignement horizontal
<div class="row justify-content-start"> <!-- Gauche -->
<div class="row justify-content-center"> <!-- Centre -->
<div class="row justify-content-end"> <!-- Droite -->
<div class="row justify-content-between"> <!-- Espace entre -->
<div class="row justify-content-around"> <!-- Espace autour -->
<div class="row justify-content-evenly"> <!-- Espace égal -->
Ordre des colonnes
Réorganiser avec order :
<div class="row">
<div class="col order-3">Colonne 3 (affichée en 1er)</div>
<div class="col order-1">Colonne 1 (affichée en 2ème)</div>
<div class="col order-2">Colonne 2 (affichée en 3ème)</div>
</div>
Order responsive :
<div class="col order-md-2 order-lg-1">Colonne</div>
Exercices guidés
Exercice 1 : Grille de base
Créez une grille avec :
- Container
- Row
- 3 colonnes égales
- Testez le responsive
Exercice 2 : Colonnes responsive
Créez un layout :
- Mobile : 1 colonne (full width)
- Tablet : 2 colonnes
- Desktop : 3 colonnes
Exercice 3 : Layout complexe
Créez un layout :
- Sidebar (3 colonnes)
- Contenu principal (6 colonnes)
- Sidebar droite (3 colonnes)
- Responsive approprié
Exercice 4 : Alignement
Testez les alignements :
- Vertical (align-items)
- Horizontal (justify-content)
- Par colonne (align-self)
Exercice 5 : Cards en grille
Créez une grille de cards :
- 3 colonnes sur desktop
- 2 colonnes sur tablette
- 1 colonne sur mobile
- Espacement cohérent
❌ Erreurs fréquentes
Erreur 1 : Oublier le container
❌ Mauvais :
<div class="row">
<div class="col">Colonne</div>
</div>
✅ Bon :
<div class="container">
<div class="row">
<div class="col">Colonne</div>
</div>
</div>
Pourquoi : Container = padding et max-width.
Erreur 2 : Colonnes > 12
❌ Mauvais :
<div class="row">
<div class="col-8">8</div>
<div class="col-6">6</div>
<!-- Total = 14 (dépasse 12) -->
</div>
✅ Bon :
<div class="row">
<div class="col-8">8</div>
<div class="col-4">4</div>
<!-- Total = 12 -->
</div>
Pourquoi : Système de 12 colonnes.
Erreur 3 : Oublier le row
❌ Mauvais :
<div class="container">
<div class="col-6">Colonne</div>
</div>
✅ Bon :
<div class="container">
<div class="row">
<div class="col-6">Colonne</div>
</div>
</div>
Pourquoi : Row = contexte flex pour colonnes.
Erreur 4 : Breakpoints dans le mauvais ordre
❌ Mauvais :
<div class="col-lg-4 col-md-6 col-12">
✅ Bon :
<div class="col-12 col-md-6 col-lg-4">
Pourquoi : Mobile-first : petit → grand.
Erreur 5 : Confondre container et container-fluid
❌ Mauvais :
<!-- Besoin de full-width mais utilise container -->
<div class="container">
<div class="hero">Hero full-width</div>
</div>
✅ Bon :
<div class="container-fluid">
<div class="hero">Hero full-width</div>
</div>
Pourquoi : container-fluid = 100% largeur.
🚀 Mini-projet
Mission : Créer un layout responsive complet
Créez une page avec :
Layout :
- Header full-width
- Container principal
- Sidebar + contenu + aside
- Footer full-width
Grille :
- Mobile : 1 colonne
- Tablet : 2 colonnes (sidebar + contenu)
- Desktop : 3 colonnes (sidebar + contenu + aside)
Critères :
- ✅ Container approprié
- ✅ Grille responsive
- ✅ Alignement correct
- ✅ Espacement cohérent
- ✅ Layout professionnel
Objectif : Maîtriser le système de grille Bootstrap pour créer des layouts responsive.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez containers, rows, cols et créez des layouts responsive avec la grille Bootstrap.