🏠 Accueil

Bootstrap 5 : le cours complet

De la découverte à l'utilisation professionnelle dans un projet Full Stack

GridComposantsAnimationsDashboardQuiz

🧭Introduction à Bootstrap

Concept. Bootstrap est une bibliothèque CSS (et JS) de composants et d'utilitaires prêts à l'emploi : on assemble une interface avec des classes au lieu de tout écrire en CSS. Analogie : des briques Lego déjà moulées.

AnnéeVersionApport clé
20111 (Twitter)Création par Mark Otto et Jacob Thornton
20133Mobile first
20184Flexbox
20215Sans jQuery, utilitaires, RTL
20235.3Mode sombre (color modes)

Bootstrap 4 vs 5

SujetBS4BS5
jQueryrequissupprimé
Attributs JSdata-toggledata-bs-toggle
Margesml-3 mr-3ms-3 me-3
Breakpointsxs à xl+ xxl
Formulairesform-groupmb-3, form-select

Bootstrap, CSS classique, Tailwind

CSS classiqueBootstrapTailwind
Philosophietout écrirecomposants prêtsutilitaires seulement
Vitesse de départlentetrès rapiderapide
Identité visuelletotaleà personnalisertotale
Idéal poursites uniquesdashboards, prototypes, back-officesdesign sur mesure
💡 Pro Tip : débutant, commencez par Bootstrap (CDN). Projet professionnel : Bootstrap via npm/Sass avec personnalisation des variables.
📌 À retenir : Bootstrap accélère le développement, mais ne remplace pas la compréhension du CSS.

⚙️Installation et configuration

CDN (débutant) : deux lignes, aucune installation.

NPM + Vite (professionnel) : versions figées, import sélectif, Sass possible.

📌 À retenir : CDN pour apprendre, npm + Vite pour un vrai projet. Le bundle inclut Popper.

🧱Le système de Grid

Concept. Une ligne (row) = 12 colonnes. Une colonne occupe de 1 à 12 parts. container a une largeur max par breakpoint ; container-fluid prend 100 %.

⚠️ Attention : toujours container > row > col. Si la somme dépasse 12, la colonne passe à la ligne.
📌 À retenir : 12 colonnes ; col-md-6 = 6/12 à partir de md, 12/12 en dessous.

📱Responsive design et breakpoints

NomPréfixeÀ partir deContainer max
xs(aucun)< 576 px100 %
sm-sm-576 px540 px
md-md-768 px720 px
lg-lg-992 px960 px
xl-xl-1200 px1140 px
xxl-xxl-1400 px1320 px

Mobile first : on écrit d'abord pour le téléphone, puis on enrichit avec md, lg…

📌 À retenir : Un préfixe s’applique à partir de sa largeur, vers le haut.

🔤Typographie, couleurs et arrière-plans

Titres h1-h6, display-1…6, lead, alignement text-center, poids fw-bold, casse text-uppercase, coupure text-truncate, couleurs text-* et fonds bg-*.

💡 Gardez une cohérence : primary = action principale, success = validation, danger = suppression.
📌 À retenir : Les classes text-* et bg-* portent un sens (sémantique), pas seulement une couleur.

📏Spacing (marges, paddings, gap)

Notation : {propriété}{côté}-{taille}. Propriété : m (margin), p (padding). Côtés : t b s e x y (s = début, e = fin). Tailles : 0-5 et auto. Responsive : p-md-5. Entre enfants flex/grid : gap-3.

📌 À retenir : Échelle 0 à 5 (0, .25, .5, 1, 1.5, 3 rem). ms/me remplacent ml/mr.

🔘Boutons et icônes

Variantes btn-primary…, contours btn-outline-*, tailles btn-lg / btn-sm, disabled, groupes btn-group, icônes avec Bootstrap Icons (<i class="bi bi-house">).

Icônes utiles : bi-speedometer2 dashboard · bi-person user · bi-gear settings · bi-search · bi-pencil edit · bi-trash delete · bi-house home · bi-box-arrow-right logout. Lien CSS : bootstrap-icons@1.11.3/font/bootstrap-icons.min.css.

📌 À retenir : Un bouton = btn + une variante.

🃏Cards

Une card = card > card-body > card-title / card-text. Elle sert de produit, profil, cours, blog, tarif ou statistique de dashboard.

📌 À retenir : h-100 aligne la hauteur des cartes d’une même ligne.

🧭Navbar

Le bouton hamburger (navbar-toggler) déclenche le plugin collapse via data-bs-toggle et data-bs-target : en dessous du breakpoint navbar-expand-lg, le menu se replie. Variantes : navbar-dark bg-dark, sticky-top, fixed-top.

📌 À retenir : navbar-expand-* choisit à partir de quand le menu est déplié.

📝Formulaires et validation

Champs : form-control, form-select, form-check, form-switch, input-group, form-floating. Validation : needs-validation novalidate + classe was-validated ajoutée au submit. Essayez d'envoyer le formulaire vide.

📌 À retenir : Validation native du navigateur + styles Bootstrap : pas besoin de JavaScript lourd.

📊Tables

table + table-striped (lignes alternées), table-hover, table-bordered, et table-responsive sur un conteneur pour le défilement horizontal sur mobile.

📌 À retenir : Sans table-responsive, un grand tableau casse la mise en page mobile.

🔔Alerts, badges, progress et spinners

📌 À retenir : alert-* pour informer, progress pour la progression, spinner-* pour l’attente.

🪟Modals

Un bouton avec data-bs-toggle="modal" et data-bs-target="#id" ouvre la fenêtre. data-bs-dismiss="modal" la ferme. Même principe pour confirmation, suppression, login ou détails produit.

📌 À retenir : Le modal est du HTML caché ; le bundle JS gère l’ouverture, le fond et la touche Échap.

🎠Accordion (FAQ) et Carousel

Remplacez les placeholders par des <img class="d-block w-100" alt="…"> libres de droits (Unsplash).

📌 À retenir : data-bs-parent force un seul panneau ouvert à la fois.

📐Utilities et Flexbox

Flex : d-flex, flex-row/column, justify-content-start|center|between|end (axe principal), align-items-* (axe transversal), flex-wrap, gap-*.

CatégorieClasses
Displayd-none d-md-block
Positionposition-relative absolute fixed-top sticky-top
Ombres / borduresshadow-sm border border-2 rounded-3 rounded-circle
Taillew-50 w-100 h-100 vh-100
Diversoverflow-hidden opacity-50 invisible
📌 À retenir : Les utilitaires remplacent la majorité du CSS « de dépannage » : moins de fichiers, plus de vitesse.

⚡Bootstrap et JavaScript

ComposantDéclencheur HTML
Modaldata-bs-toggle="modal"
Dropdowndata-bs-toggle="dropdown"
Collapse / Accordiondata-bs-toggle="collapse"
Carouseldata-bs-ride, data-bs-slide
Tooltip / Popoverà initialiser en JS (Popper)
ToastJS : new bootstrap.Toast(el).show()
Offcanvasdata-bs-toggle="offcanvas"

bootstrap.bundle.min.js = Bootstrap JS + Popper (positionnement des menus, tooltips, popovers). Sans lui : pas de burger, de modal ni de dropdown.

📌 À retenir : Charger le bundle avant la fin du body.

✨Animations

Principe : transitions (transition), transformations (transform) et @keyframes, en complément des classes Bootstrap (fade, progress-bar-animated, spinner-border).

💡 Animations courtes (150-400 ms), utiles, et désactivées avec prefers-reduced-motion.
📌 À retenir : Animer pour guider l’œil, pas pour décorer.

🎓Projet final : Student Management Dashboard

Sidebar, navbar, cartes de statistiques, table avec recherche et filtre, modal d'ajout, suppression avec confirmation, alerte, progress, footer, responsive (sidebar masquée sous md).

💡 Améliorations : modal « Modifier » (exercice), validation du formulaire, sauvegarde dans localStorage, puis branchement sur une API REST.
📌 À retenir : Séparez toujours structure (HTML), style (CSS) et comportement (JS).

🌐Bootstrap dans un projet Full Stack

StackRôle de Bootstrap
Node + ExpressVues (EJS) ou fichiers statiques servis par express.static
ReactPackage react-bootstrap (composants sans jQuery)
LaravelVues Blade, intégration via Vite
ASP.NETInclus dans les templates MVC/Razor
Base de donnéesAucun lien direct : Bootstrap affiche les données reçues de l’API
📌 À retenir : Bootstrap est uniquement la couche présentation : aucun rôle côté serveur ou base de données.

✅Bonnes pratiques et erreurs fréquentes

Évitez le CSS inline, créez des composants réutilisables, pensez accessibilité (alt, aria-label, contrastes), performance (CSS minifié, import sélectif via npm) et hiérarchie visuelle claire. Ne copiez jamais du Bootstrap sans comprendre le CSS sous-jacent.

📋Cheat Sheet

🏋️Exercices

🧠Quiz (20 questions)

Cliquez sur une réponse : vert = bonne, rouge = erreur.

0 / 0 (sur 20)
Voir toutes les réponses