5.2 — Nav, tabs, pagination, breadcrumb
⏱️ TL;DR —
.navest la base des navigations en ligne (nav-tabspour des onglets,nav-pillspour des pilules). Avecdata-bs-toggle="tab", les onglets basculent des panneaux (tab-content/tab-pane)..paginationpagine ;.breadcrumbaffiche un fil d’Ariane.
🎯 Objectifs
- Créer onglets et pilules.
- Faire basculer des panneaux de contenu (tabs JS).
- Ajouter pagination et fil d’Ariane.
Nav de base
<ul class="nav">
<li class="nav-item"><a class="nav-link active" href="#">Actif</a></li>
<li class="nav-item"><a class="nav-link" href="#">Lien</a></li>
</ul>Variantes : nav-tabs (onglets), nav-pills (pilules), nav-fill / nav-justified (répartition), flex-column (vertical).
Onglets avec panneaux (JS)
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#t1"
type="button" role="tab">Onglet 1</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#t2"
type="button" role="tab">Onglet 2</button>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade show active" id="t1" role="tabpanel">Contenu 1</div>
<div class="tab-pane fade" id="t2" role="tabpanel">Contenu 2</div>
</div>data-bs-toggle="tab" relie chaque bouton (via data-bs-target) à son tab-pane.
Pagination
<nav aria-label="Pagination">
<ul class="pagination">
<li class="page-item disabled"><a class="page-link">Préc.</a></li>
<li class="page-item active"><a class="page-link" href="#">1</a></li>
<li class="page-item"><a class="page-link" href="#">2</a></li>
<li class="page-item"><a class="page-link" href="#">Suiv.</a></li>
</ul>
</nav>Tailles : pagination-lg, pagination-sm. Alignement via utilitaires flex (justify-content-center).
Breadcrumb (fil d’Ariane)
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Accueil</a></li>
<li class="breadcrumb-item"><a href="#">Produits</a></li>
<li class="breadcrumb-item active" aria-current="page">Chaussures</li>
</ol>
</nav>Le séparateur se personnalise avec la variable CSS --bs-breadcrumb-divider.
⚠️ Piège — Pour les onglets JS, chaque
data-bs-targetdoit pointer vers l’idexact d’untab-pane. Un seul panneau doit portershow activeau départ, sinon deux contenus s’affichent en même temps.
💡 Pour un dev React — Les tabs
data-bs-togglefonctionnent, mais en React on gère souvent l’onglet actif par l’état et on affiche conditionnellement le panneau — ou on utilise<Tabs>/<Tab>dereact-bootstrap. Cela évite les problèmes de synchro DOM/état.
✏️ Exercices
- Trois onglets qui basculent trois panneaux, le premier actif.
✅ Solution
Reprendre le markup « onglets avec panneaux » avec un 3e bouton data-bs-target="#t3" et un tab-pane#t3. Seul #t1 porte show active.
- Une pagination centrée horizontalement.
✅ Solution
<ul class="pagination justify-content-center">…</ul>.
🧠 Quiz de révision
1. Quelle classe transforme une nav en onglets ?
nav-tabs.
2. Quel attribut fait basculer les panneaux d’onglets ?
data-bs-toggle="tab" (+ data-bs-target).
3. Quelle classe pour l’item de page courant ?
active sur le page-item.
4. Comment marquer la page courante d’un breadcrumb ?
class="active" aria-current="page".
5. Comment changer le séparateur d’un breadcrumb ?
Via la variable CSS --bs-breadcrumb-divider.
Chapitre suivant : 5.3 — Dropdowns