Web · Sites & e-commerce

Tableau HTML

créer une table propre et accessible

Au-delà de table, tr et td : écrire une table structurée, accessible et lisible sur mobile, sans les vieux pièges.

Gros plan sur des lignes de code source colorées affichées sur un écran
Réponse rapide

Un tableau HTML s’écrit avec la balise table, des lignes tr et des cellules th (en-têtes) et td (données). Pour qu’il soit propre, on ajoute thead, tbody, une caption et l’attribut scope sur les en-têtes. La mise en forme se fait en CSS, et le tableau sert aux données, jamais à la mise en page.

  • table, tr, th, td : le conteneur, les lignes, les en-têtes et les données.
  • thead, tbody, caption : structurent et titrent le tableau.
  • scope sur les th : rend le tableau accessible aux lecteurs d’écran.
  • CSS pour la forme : bordures, espacement et responsive, pas d’attributs obsolètes.

Un tableau HTML sert à présenter des données organisées en lignes et en colonnes : un planning, un comparatif, une grille de tarifs. Dès qu’une information se lit naturellement en croisant une ligne et une colonne, le tableau est le bon outil. En revanche, il n’a jamais été conçu pour mettre en page une interface : ça, c’est le travail du CSS.

À quoi sert un tableau HTML, et quand l’utiliser

La règle est simple : un tableau présente des données tabulaires, c’est-à-dire des informations qui ont un sens en croisant une ligne et une colonne. Le tarif d’un produit selon sa formule, les horaires d’un service par jour, les caractéristiques de plusieurs modèles côte à côte : autant de cas où le tableau structure vraiment l’information.

Le piège historique, c’est d’avoir utilisé les tableaux pour positionner des éléments sur une page. Cette pratique est abandonnée depuis longtemps : elle rend le code illisible, casse l’accessibilité et complique le responsive. Pour disposer des blocs, on utilise aujourd’hui les outils de mise en page CSS. Le tableau, lui, reste dédié aux données.

La structure de base d’un tableau

Un tableau repose sur quelques balises, chacune avec un rôle précis. La balise table est le conteneur. À l’intérieur, tr (table row) définit une ligne. Dans chaque ligne, on place des cellules : th pour une cellule d’en-tête, td pour une cellule de données ordinaire.

Produit Prix
Forfait standard 19 € / mois

La différence entre th et td n’est pas qu’esthétique. Une cellule th indique au navigateur, et surtout aux technologies d’assistance, qu’il s’agit d’un en-tête décrivant une colonne ou une ligne. C’est ce qui permet de comprendre à quoi se rapporte chaque donnée.

BaliseRôle
tableConteneur global du tableau
trUne ligne du tableau
th / tdCellule d’en-tête / cellule de données
thead / tbodyZone d’en-tête / corps des données
captionTitre décrivant le tableau

Structurer un tableau lisible et accessible

Pour un tableau propre, on regroupe les en-têtes et le corps avec thead et tbody. Le thead contient la ou les lignes d’en-tête, le tbody contient les données. Cette séparation clarifie le code et permet, par exemple, de figer l’en-tête lors d’un défilement.

Deux éléments font une vraie différence pour l’accessibilité. D’abord la balise caption, placée juste après l’ouverture de table, qui donne un titre au tableau. Ensuite l’attribut scope sur les th, qui précise si l’en-tête concerne une colonne (scope="col") ou une ligne (scope="row").

Tarifs par formule
Formule Prix
Standard 19 € / mois

Avec cette structure, un lecteur d’écran annonce correctement à quoi correspond chaque cellule. Un tableau accessible n’est pas plus long à écrire ; il demande juste les bonnes balises au bon endroit.

Mettre en forme un tableau avec le CSS

Toute la présentation se gère en CSS, pas avec d’anciens attributs HTML. On oublie border, cellpadding ou bgcolor directement sur les balises : ces attributs de présentation sont obsolètes. À la place, on cible le tableau dans la feuille de style.

table {
  border-collapse: collapse;
  width: 100%;
}
th, td {
  padding: 0.6rem 0.8rem;
  text-align: left;
}
thead {
  background: #f1f5f9;
}

Ces quelques règles suffisent à rendre un tableau lisible : border-collapse fusionne les bordures, un peu de padding aère les cellules, et un fond léger distingue l’en-tête. On peut ajouter une alternance de teinte une ligne sur deux pour suivre les lignes du regard. L’idée est de servir la lecture, pas de surcharger.

Rendre un tableau lisible sur mobile

C’est souvent le point négligé. Un tableau large déborde de l’écran sur mobile et casse la mise en page. La solution la plus simple consiste à placer le tableau dans un conteneur qui défile horizontalement : la ligne reste intacte, l’utilisateur fait glisser pour voir les colonnes suivantes.

Pour les tableaux vraiment denses, une autre approche consiste à repenser l’affichage en cartes empilées sur petit écran, chaque ligne devenant un bloc. C’est plus de travail, mais plus confortable à lire. Dans tous les cas, on évite un tableau qui force un zoom arrière sur le contenu.

Les erreurs fréquentes à éviter

La première reste l’usage du tableau pour la mise en page. Vient ensuite l’oubli des en-têtes, ou l’emploi de td partout, qui prive le tableau de toute sémantique. On voit aussi des attributs de présentation obsolètes laissés dans le HTML, alors que tout devrait passer par le CSS.

Autre travers : le tableau surchargé, avec trop de colonnes, qui devient illisible surtout sur mobile. Quand l’information ne tient pas, mieux vaut la scinder ou choisir un autre format. Un bon tableau reste sobre : des données réellement tabulaires, des en-têtes clairs, une mise en forme au service de la lecture.

Comment créer un tableau en HTML ?

On ouvre une balise table, on y place des lignes tr, et dans chaque ligne des cellules : th pour les en-têtes, td pour les données. On regroupe ensuite les en-têtes dans thead et les données dans tbody.

Quelle est la différence entre th et td ?

th est une cellule d’en-tête : elle décrit une colonne ou une ligne et est annoncée comme telle aux lecteurs d’écran. td est une cellule de données ordinaire. Utiliser th pour les en-têtes donne du sens au tableau.

À quoi servent thead et tbody ?

Ils séparent la zone d’en-tête du corps du tableau. Cela clarifie le code, facilite la mise en forme CSS et permet par exemple de figer l’en-tête lors d’un défilement.

Comment rendre un tableau responsive ?

Le plus simple est de placer le tableau dans un conteneur qui défile horizontalement sur petit écran. Pour les tableaux très denses, on peut aussi repenser l’affichage en cartes empilées, une par ligne.

Peut-on utiliser un tableau pour la mise en page ?

Non, c’est une pratique abandonnée. Elle nuit à l’accessibilité et au responsive. La mise en page se gère en CSS ; le tableau est réservé aux données tabulaires.

Un tableau bien écrit tient en quelques balises bien choisies : des en-têtes clairs, une structure accessible, et le CSS pour le reste. Le code propre se voit, même dans une simple table.

Laisser un commentaire