🧮 Le cours : présenter des données
Le tableau est l'outil pour présenter des données à deux dimensions : résultats, horaires, comparatifs. Il ne doit jamais servir à mettre en page un site (placer le menu à gauche, le texte à droite) : c'est le rôle du CSS (voir Flexbox). Un tableau HTML est l'affichage d'un tableau à deux dimensions, comme ceux de Tableaux 2D : des lignes, et dans chaque ligne, des cellules.
Anatomie d'un tableau
table
├── caption titre du tableau
├── thead
│ └── tr ── th, th, th ligne des en-têtes de colonnes
├── tbody
│ ├── tr ── th, td, td une ligne de données
│ └── tr ── th, td, td
└── tfoot
└── tr ── … ligne de totaux (facultative)
- On construit le tableau ligne par ligne : chaque
<tr> contient des cellules, il n'y a pas de balise « colonne ».
<th> est une cellule d'en-tête (en gras et centrée par défaut), <td> une cellule de données.
<thead>, <tbody> et <tfoot> regroupent les lignes par rôle : utiles pour le CSS et l'impression.
Des tableaux accessibles
Un lecteur d'écran lit la cellule avec son en-tête (« NSI, Lina, 16 »). Pour cela, il doit savoir que <th> désigne une colonne ou une ligne : l'attribut scope vaut col (en-tête de colonne) ou row (en-tête de ligne). <caption> donne un titre au tableau, lu avant son contenu.
Fusionner des cellules
Quand une cellule en recouvre d'autres, on supprime les cellules recouvertes. Dans l'exemple du planning, « NSI » (rowspan="2") occupe déjà la colonne du lundi à 9h : la ligne de 9h ne contient donc que deux cellules (l'en-tête « 9h » et « Anglais ») au lieu de trois. Compte toujours les colonnes : chaque ligne doit totaliser le même nombre, fusions comprises.
Mettre en forme avec CSS
Les bordures, l'espacement et les couleurs se règlent en CSS (l'attribut border de HTML est obsolète). border-collapse: collapse fusionne les bordures voisines ; padding donne de l'air aux cellules ; tr:nth-child(even) colore une ligne sur deux.
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
border: 1px solid #94a3b8;
padding: 0.5rem 0.75rem;
text-align: left;
}
tbody tr:nth-child(even) {
background: #f1f5f9;
}
Aligne les nombres à droite (text-align: right) pour que les unités, dizaines et centaines tombent dans les mêmes colonnes.
Tableaux trop larges sur téléphone
Un tableau de nombreuses colonnes déborde d'un petit écran. Entoure-le d'un conteneur qui défile horizontalement plutôt que de laisser toute la page déborder.
<div class="table-wrap">
<table>
…
</table>
</div>
.table-wrap {
max-width: 100%;
overflow-x: auto;
}