Dernière mise à jour le 18 septembre 2022
Un tableau en HTML sert à organiser des éléments dans un tableau à deux dimensions.
Il peut contenir n'importe quoi :
| Lorem ipsum | dolor sit amet | 666 |
| Je suis une cellule | ![]() |
Bonjour! |
Il pourrait même contenir un autre tableau!
Un tableau est constitué d’une ou plusieurs rangées qui, à leur tour, sont constituées d’une ou plusieurs cellules.
AVERTISSEMENT : Les tableau ne doivent pas être utilisés pour la mise en page, mais seulement pour présenter de l'information sous forme tabulaire. Pour la mise en page il y a les feuilles de styles (CSS).
Un tableau, représenté par l'élément table, contient des rangées, soit des éléments tr (pour table row).
Ces rangées contiennent à leur tour des cellules, soit des éléments td (pour table data).
<table>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
</table>
Si on veut utiliser une rangée du tableau comme entête, on pêut remplacer ses éléments td par des éléments th (pour table header).
<table>
<tr>
<th>...</th><th>...</th><th>...</th>
</tr>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
</table>
L'élément th est par défaut centré et affiché en caractères gras par les navigateurs, sans qu'il soit nécessaire de lui affecter un style.
| Bla | Bla | Bla |
|---|---|---|
| Lorem ipsum | dolor sit amet | 666 |
| Je suis une cellule | ![]() |
Bonjour! |
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Tableau élémentaire</title>
</head>
<body>
<p>
Par défaut un tableau n'a pas de bordure et
pas de remplissage (padding).
</p>
<p>
La première rangée contient des "th" et les
autres des éléments "td".
</p>
<table>
<tr>
<th>Article</th>
<th>Prix</th>
</tr>
<tr>
<td>Ventilateur</td>
<td>70$</td>
</tr>
<tr>
<td>Climatiseur</td>
<td>350$</td>
</tr>
</table>
</body>
</html>
Par défaut les tableaux n'ont pas de bordures.
| entete | entete | entete |
|---|---|---|
| cellule | cellule | cellule |
| cellule | cellule | cellule |
On peut leur en ajouter à l'aide des propriétés border-width, border-style et border-color.
On doit modifier la valeur des propriétés pour les éléments th et td.
Exemple :
th, td {
border-width: 2px;
border-style: solid;
border-color: blue;
}
Sortie :
| entete | entete | entete |
|---|---|---|
| cellule | cellule | cellule |
| cellule | cellule | cellule |
Il est généralement plus simple d'utiliser la propriété border qui est la combinaison des propriétés: border-width, border-style et border-color.
On aurait donc pu écrire le code de cette manière :
th, td {
border: 2px solid blue;
}
C'est déjà un début, mais les bordures des différentes cellules sont par défaut distancées l'une de l'autre, ce qui n'est généralement pas l'effet recherché.
La propriété border-collapse permet de régler le problème en fusionnant les bordures.
Cette propriété est rajoutée à l'élément table.
Exemple :
table {
border-collapse: collapse;
}
th, td {
border: 2px solid blue;
}
Sortie :
| entete | entete | entete |
|---|---|---|
| cellule | cellule | cellule |
| cellule | cellule | cellule |
On peut également simplifier les choses en donnant les mêmes propriétés à tous les éléments qui forment le tableau :
table, th, td {
border: 2px solid blue;
border-collapse: collapse;
}
La largeur s'exprime dans différentes unités, on peut écrire thin, medium, thick, une valeur en pixels (spécifier l'unité) ou dans toutes les unités possibles en CSS (em, rem, %, etc.), mais ces dernières options sont rarement utilisées
Les types les plus utilisés sont les suivants :
Par défaut les tableaux n'ont pas d'espacement intérieur (remplissage ou padding en anglais).
Pour aérer le contenu des cellules, il suffit d'utiliser la propriété padding, qui correspond à l'espacement intérieur entre la bordure et le contenu qui est généralement du texte, mais qui pourrait aussi être une image, un bouton, etc.
Exemple :
table, th, td {
border: 2px solid blue;
border-collapse: collapse;
padding: 10px;
}
Sortie :
| entete | entete | entete |
|---|---|---|
| cellule | cellule | cellule |
| cellule | cellule | cellule |
Le padding peut être spécifié dans n'importe quelle unité, mais nous nous limiterons pour l'instant au pixel ("px").
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Tableau élémentaire</title>
<style>
table {
border-collapse: collapse;
}
th, td {
border: 2px solid blue;
padding: 10px;
}
</style>
</head>
<body>
<p>
N'hésitez pas à modifier les styles pour en
constater l'effet sur le tableau
</p>
<table>
<tr>
<th>Article</th>
<th>Prix</th>
</tr>
<tr>
<td>Ventilateur</td>
<td>70$</td>
</tr>
<tr>
<td>Climatiseur</td>
<td>350$</td>
</tr>
</table>
</body>
</html>
On peut faire en sorte que toutes les cellules d'un tableau n'aient pas la même taille.
Exemple :
| Sur 2 colonnes | ||
| Sur 2 rangées |
||
On y parvient à l'aide des propriétés colspan et rowspan des éléments th et td.
La propriété colspan permet d'avoir des cellules qui s’étendent sur plus d’une colonne.
Exemple :
<table>
<tr>
<td colspan="2">colspan=2</td>
<td></td>
<!-- pas de 3e td -->
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
Sortie :
| colspan=2 | ||
La propriété rowspan permet d'avoir des cellules qui s’étendent sur plus d’une rangée.
Exemple :
<table>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td rowspan="2">rowspan=2</td>
</tr>
<tr>
<td></td>
<td></td>
<!-- pas de 3e td -->
</tr>
</table>
Sortie :
| rowspan=2 | ||
Exemple combiné :
<table>
<tr>
<td colspan="2" style="background:turquoise"></td>
<td></td>
<!-- pas de 3e td -->
</tr>
<tr>
<td></td>
<td></td>
<td rowspan="2" style="background:orange"></td>
</tr>
<tr>
<td></td>
<td></td>
<!-- pas de 3e td -->
</tr>
</table>
Sortie :
Tableau de 2 rangées et 3 colonnes
<table>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
</table>
Avec avec ligne d'entête
<table>
<tr>
<th>...</th><th>...</th><th>...</th>
</tr>
<tr>
<td>...</td><td>...</td><td>...</td>
</tr>
</table>
Avec avec colonne d'entête
<table>
<tr>
<th>...</th><td>...</td><td>...</td>
</tr>
<tr>
<th>...</th><td>...</td><td>...</td>
</tr>
</table>
Fusionner 2 cellules à l'horizontale
<table>
<tr>
<td colspan="2"></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
</table>
Fusionner 2 cellules à la verticale
<table>
<tr>
<td rowspan="2"></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
</table>
CSS minimal pour tableau
table {
border-collapse: collapse;
}
th, td {
border: solid black 1px;
}