Maîtriser les composants Bootstrap 5 les plus utiles pour intégrer rapidement des interfaces responsives et accessibles.
Installation et structure
Bootstrap 5 est la dernière version stable, compatibilité totale avec les navigateurs modernes. Aucune dépendance jQuery (rupture avec v4).
Qu'est-ce qui change en v5
- Pas jQuery — JavaScript pur
- CSS custom variables (theme personnalisable)
- Meilleur support du dark mode
- Utilitaires étendus (spacing, typography, etc)
Installation via CDN (plus rapide pour démarrer):
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 5 Demo</title>
<!-- CSS Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<h1>Mon site Bootstrap 5</h1>
</div>
<!-- JavaScript Bootstrap (optionnel) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Ou via npm pour les projets modernes:
npm install bootstrap
Grid system responsive
Le système de grille Bootstrap divise la page en 12 colonnes. On compose des layouts avec .container, .row, et .col-*.
Exemple: layout responsive 2 colonnes sur desktop, 1 colonne sur mobile:
<div class="container">
<div class="row">
<!-- Sur mobile: pleine largeur, sur md+: 6 colonnes -->
<div class="col-12 col-md-6">
<p>Colonne gauche</p>
</div>
<div class="col-12 col-md-6">
<p>Colonne droite</p>
</div>
</div>
</div>
Alignement et espacement:
<!-- Centrer le contenu -->
<div class="row justify-content-center">
<div class="col-md-8">...</div>
</div>
<!-- Espacement entre colonnes -->
<div class="row g-4"> <!-- gap: 1.5rem -->
<div class="col-md-6">...</div>
<div class="col-md-6">...</div>
</div>
Cartes (Cards)
Les cartes sont des conteneurs versables contenant du titre, du corps et des actions. Parfait pour les grilles de contenu.
<div class="card" style="width: 18rem;">
<img src="image.jpg" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Titre de la carte</h5>
<p class="card-text">Texte descriptif court.</p>
<a href="#" class="btn btn-primary">Action</a>
</div>
</div>
Grille de cartes responsives:
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
<div class="col">
<div class="card">...</div>
</div>
<!-- répète pour d'autres cartes -->
</div>
row-cols-* := nombre de colonnes
- row-cols-1: 1 colonne sur tous les breakpoints
- row-cols-md-2: 2 colonnes sur md+
- row-cols-lg-3: 3 colonnes sur lg+
Modales et alertes
Modales: boîtes de dialogue qui captent l'attention. Utilisées pour les confirmations, formulaires rapides, etc.
<!-- Bouton déclencheur -->
<button type="button" class="btn btn-primary"
data-bs-toggle="modal" data-bs-target="#monModal">
Ouvrir modal
</button>
<!-- Modal -->
<div class="modal fade" id="monModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Titre</h5>
<button type="button" class="btn-close"
data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
Contenu de la modal
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary"
data-bs-dismiss="modal">Fermer</button>
<button type="button" class="btn btn-primary">
Confirmer
</button>
</div>
</div>
</div>
</div>
Alertes: messages contextuels sans fermeture automatique.
<div class="alert alert-success" role="alert">
✓ Opération réussie!
</div>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
✗ Erreur: vérifiez les champs requis
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
Formulaires accessibles
Bootstrap fournit un système de formulaires étiquetés et responsifs. Toujours associer <label> et <input> avec un for.
<form>
<div class="mb-3">
<label for="email" class="form-label">Adresse email</label>
<input type="email" class="form-control" id="email"
name="email" required>
<div class="form-text">
Nous ne partagerons jamais votre email.
</div>
</div>
<div class="mb-3">
<label for="message" class="form-label">Message</label>
<textarea class="form-control" id="message" rows="3"></textarea>
</div>
<!-- Checkbox -->
<div class="form-check mb-3">
<input type="checkbox" class="form-check-input" id="check1">
<label class="form-check-label" for="check1">
J'accepte les conditions
</label>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
États de validation dynamiques:
<div class="mb-3">
<label for="username" class="form-label">Nom d'utilisateur</label>
<input type="text" class="form-control is-invalid"
id="username" required>
<div class="invalid-feedback">
Le nom d'utilisateur est requis.
</div>
</div>
Bonnes pratiques
- Accessibilité d'abord: toujours associer labels et inputs, utiliser
roleetaria-*sur les composants dynamiques. - Responsive par défaut: concevoir mobile-first, tester sur sm (576px) et md (768px).
- Utilitaires avant custom CSS: Bootstrap 5 fournit des utilitaires pour spacing (m-*, p-*), display (d-*), flexbox (d-flex, justify-content-*).
- Personnaliser via CSS variables: modifier
--bs-primary,--bs-body-bgau lieu de surcharger les classes. - Minifier et purger: en production, n'inclure que les composants utilisés avec PurgeCSS ou Tailwind CSS.
- Tester le dark mode: Bootstrap 5 supporte
data-bs-theme="dark"sur l'élément racine.
Exemple: personnaliser les couleurs:
/* Surcharger les variables Bootstrap */
:root {
--bs-primary: #e74c3c;
--bs-secondary: #95a5a6;
--bs-body-bg: #f8f9fa;
--bs-body-color: #2c3e50;
}