Base
La conception des tableaux sous bootstrap est optionnelle : il est possible d'ajouter des classes pour gérer les bordures, les striped, l'aspect responsive, les couleurs, les tailles, etc...
Toutes les options sont cumulables.
Dans tous les cas, la classe de base .table est à mettre en place sur la balise table. L'ajout des styles personnalisés sera à mettre en place en fonction des besoins.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First</th>
<th scope="col">Last</th>
<th scope="col">Handle</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td>Larry</td>
<td>the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
Variants
Il est possible de contextualiser les tableaux, les lignes de tableaux ou les cellules du tableau via l'ajout d'une classe associée aux contextes/thèmes de bootstrap pour gérer les background-color. Il suffit d'ajouter la classe .table-{contexte} sur les balises tr et/ou sur les balises td si l'on souhaite gérer uniquement une case en particulier.
| Classe |
Titre |
Titre |
| Défaut |
Cellule |
Cellule |
| Primaire |
Cellule |
Cellule |
| Secondaire |
Cellule |
Cellule |
| Succès |
Cellule |
Cellule |
| Danger |
Cellule |
Cellule |
| Avertissement |
Cellule |
Cellule |
| Info |
Cellule |
Cellule |
| Lumière |
Cellule |
Cellule |
| Sombre |
Cellule |
Cellule |
<!-- On tables -->
<table class="table-primary">...</table>
<table class="table-secondary">...</table>
<table class="table-success">...</table>
<table class="table-danger">...</table>
<table class="table-warning">...</table>
<table class="table-info">...</table>
<table class="table-light">...</table>
<table class="table-dark">...</table>
<!-- On rows -->
<tr class="table-primary">...</tr>
<tr class="table-secondary">...</tr>
<tr class="table-success">...</tr>
<tr class="table-danger">...</tr>
<tr class="table-warning">...</tr>
<tr class="table-info">...</tr>
<tr class="table-light">...</tr>
<tr class="table-dark">...</tr>
<!-- On cells (`td` or `th`) -->
<tr>
<td class="table-primary">...</td>
<td class="table-secondary">...</td>
<td class="table-success">...</td>
<td class="table-danger">...</td>
<td class="table-warning">...</td>
<td class="table-info">...</td>
<td class="table-light">...</td>
<td class="table-dark">...</td>
</tr>
Striped
Striped rows
Possibilité d'alterner les lignes paires / impaires avec l'ajout de la classe .table-striped sur la balise table.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
<table class="table table-striped">
...
</table>
Striped columns
Possibilité d'alterner les lignes paires / impaires avec l'ajout de la classe .table-striped-columns sur la balise table.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
<table class="table table-striped-columns">
...
</table>
Combinaisons
Ces classes peuvent être combinées avec les variants de tableau.
Exemple en mode dark :
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
<table class="table table-striped table-dark">
...
</table>
<table class="table table-striped-columns table-primary">
...
</table>
Hoverable rows
Possibilité d'avoir un effet au survol des lignes du tableau en ajoutant la classe .table-hover sur la balise table.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry the Bird |
@twitter |
<table class="table table-hover">
...
</table>
Exemple Dark Mode Hoverable
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry the Bird |
@twitter |
<table class="table table-dark table-hover">
...
</table>
Exemple Striped + Hoverable
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry the Bird |
@twitter |
<table class="table table-striped table-hover">
...
</table>
Cellules actives
Mettez certaines cellules en surbrillance en lui ajoutant la classe .table-active. Ci-dessous un exemple sur un tr et sur un td.
| # |
First |
Dernier |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
John |
Doe |
@social |
Bordures
Possibilité d'ajouter des bordures avec la classe .table-bordered sur la balise table.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry the Bird |
@twitter |
<table class="table table-bordered">
...
</table>
Bordures associées aux thèmes
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Jacob |
Thornton |
@twitter |
<table class="table table-bordered border-primary">
...
</table>
Pas de bordure
Possibilité de retirer les bordures avec la classe .table-borderless sur la balise table.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry the Bird |
@twitter |
<table class="table table-borderless">
...
</table>
Small size
Possibilité d'avoir un tableau plus petit et "ramassé" en ajoutant la classe .table-sm sur la balise table.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry the Bird |
@twitter |
<table class="table table-sm">
...
</table>
Séparateurs
Possibilité d'ajouter une bordure plus épaisse entre les groupes de tableaux thead - tbody - tfoot en ajoutant la classe .table-group-divider sur un des éléments cité.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
John |
Doe |
@social |
<table class="table">
<thead>
...
</thead>
<tbody class="table-group-divider">
...
</tbody>
</table>
Thead custom
Possibilité de customiser l'entête .table-dark ou .table-light sur thead.
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
| # |
First |
Last |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
Larry |
the Bird |
@twitter |
<table class="table">
<thead class="table-dark">
...
</thead>
<tbody>
...
</tbody>
</table>
<table class="table">
<thead class="table-light">
...
</thead>
<tbody>
...
</tbody>
</table>
Table foot
| # |
First |
Dernier |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
John |
Doe |
@social |
| Pied de page |
Pied de page |
Pied de page |
Pied de page |
<table class="table">
<thead>
...
</thead>
<tbody>
...
</tbody>
<tfoot>
...
</tfoot>
</table>
Table caption
Utilisez la balise caption pour titrer le tableau.
Liste des utilisateurs
| # |
First |
Dernier |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
John |
Doe |
@social |
Possibilité de placer le titre au-dessus avec la classe .caption-top sur le caption.
Liste des utilisateurs
| # |
First |
Dernier |
Handle |
| 1 |
Mark |
Otto |
@mdo |
| 2 |
Jacob |
Thornton |
@fat |
| 3 |
John |
Doe |
@social |
<table class="table table-sm">
<caption>List of users</caption>
<thead>
...
</thead>
<tbody>
...
</tbody>
</table>
<table class="table table-sm">
<caption class="caption-top">List of users</caption>
<thead>
...
</thead>
<tbody>
...
</tbody>
</table>
Responsive
Il est possible de mettre un place un scroll horizontal sur les tableaux qui atteignent leur limite en largeur. Il suffit d'encapsuler le tableau dans une div avec la classe .table-responsive
| # |
Titre |
Titre |
Titre |
Titre |
Titre |
Titre |
Titre |
Titre |
Titre |
| 1 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| 2 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| 3 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
<div class="table-responsive">
<table class="table">
...
</table>
</div>
Breakpoint specific
Il est possible de déclencher le comportement responsive d'un tableau jusqu'à un breakpoint défini. Utilisez la classe .table-responsive{-sm|-md|-lg|-xl|-xxl} sur le dive conteneur du tableau. Ci-dessous les 5 exemples de sm à xxl.
-sm
| Lorem ipsum# |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
| Lorem ipsum1 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum2 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum3 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
-md
| Lorem ipsum# |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
| Lorem ipsum1 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum2 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum3 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
-lg
| Lorem ipsum# |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
| Lorem ipsum1 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum2 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum3 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
-xl
| Lorem ipsum# |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
| Lorem ipsum1 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum2 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum3 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
-xxl
| Lorem ipsum# |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
Lorem ipsumTitre |
| Lorem ipsum1 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum2 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
| Lorem ipsum3 |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
Lorem ipsum |
<div class="table-responsive-sm">
<table class="table">
...
</table>
</div>
<div class="table-responsive-md">
<table class="table">
...
</table>
</div>
<div class="table-responsive-lg">
<table class="table">
...
</table>
</div>
<div class="table-responsive-xl">
<table class="table">
...
</table>
</div>
<div class="table-responsive-xxl">
<table class="table">
...
</table>
</div>
Variables Sass
De nombreuses variables sont paramétrables :
$table-cell-padding-y: .5rem;
$table-cell-padding-x: .5rem;
$table-cell-padding-y-sm: .25rem;
$table-cell-padding-x-sm: .25rem;
$table-cell-vertical-align: top;
$table-color: var(--#{$prefix}emphasis-color);
$table-bg: var(--#{$prefix}body-bg);
$table-accent-bg: transparent;
$table-th-font-weight: null;
$table-striped-color: $table-color;
$table-striped-bg-factor: .05;
$table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor);
$table-active-color: $table-color;
$table-active-bg-factor: .1;
$table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor);
$table-hover-color: $table-color;
$table-hover-bg-factor: .075;
$table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor);
$table-border-factor: .2;
$table-border-width: var(--#{$prefix}border-width);
$table-border-color: var(--#{$prefix}border-color);
$table-striped-order: odd;
$table-striped-columns-order: even;
$table-group-separator-color: currentcolor;
$table-caption-color: var(--#{$prefix}secondary-color);
$table-bg-scale: -80%;