Les tableaux (ou tables) dans HTML ressemblent aux tableaux de données que permettent de créer les tableurs (et n'ont rien à voir avec les tables d'une base de données relationnelles).

Si au moment de leur invention par Netscape, les tableaux étaient effectivement prévus pour représenter des données tabulaires, cette utilisation initiale à été rapidement détournée par les concepteurs de site pour effectuer la mise en page des documents.

grille de mise en page

Cette technique est héritée de la mise en page papier qui se fait à partir d'une grille : une série de lignes horizontales et de colonnes verticales, qui partagent la page de manière harmonieuse. On peut ainsi donner de l'importance à certaines zones (ligne, colonne ou jonction des deux) et guider le chemin d'exploration et de lecture. La grille et ses éléments peuvent être directement visibles et clairement marqués par des cadres, filets ou colonnages, mais ils peuvent aussi être agencés d'une façon plus subtile qui ne se remarque que si l'on recherche l'architecture sous-jacente de la mise en page.
Dans les années 1995-2000, les tableaux permettaient d'agencer les blocs d'informations et les images des pages car les feuilles de style CSS en étaient à leur début et n'étaient pas implémentées de façon satisfaisante par les navigateurs. Les tableaux étaient alors les seules constructions HTML qui permettaient d'avoir des couleurs de fond et/ou des images de fond différentes suivant les blocs et d'avoir des élements positionnés en vis à vis les uns à côté des autres.
Jusque vers 2007, 2008, les tableaux dans HTML étaient donc essentiellement utilisés pour mettre au point des grilles d'affichage et de mise en page. Le formatage qu'ils permettent est extrêmement puissant et toutes les pages HTML professionnelles étaient construites avec des tableaux imbriqués.

Aujourd'hui, cette utilisation des tableaux est totalement abandonnée au profit des feuilles de style CSS qui offrent des possibilités démultipliées dans le positionnement et la mise en forme des éléments, et qui sont bien prises en compte et implémentées par les navigateurs.
On est donc revenu à l'utilisation qui était prévue originellement pour les tableaux : la présentation de données tabulaires.

Structure minimum

Un tableau est constitué de lignes qui contiennent des cellules. La structure est composée au minimum avec trois éléments :

structure minimum d'un tableau
Exemple : tableau avec structure minimum

Comme on peut le constater à l'affichage de l'exemple, la mise en forme par défaut est pratiquement inexistante. Il faut donc utiliser des règles de style CSS pour rendre un tableau "présentable".

Exemple : tableau avec structure minimum

On a ici un exemple minimum de mise en forme. Voir dans le tutoriel CSS la partie consacrée aux tableaux.

Structure avec sémantique

Aux 3 éléments de base on peut en ajouter d'autres si on veut que la définition du tableau soit sémantiquement correcte :

structure avec sémantique d'un tableau
structure vue en 3D

Si il y a un pied au tableau, cet élément tfoot doit être placé dans le code HTML directement après l'élément d'en-tête thead et avant l'élément tbody. Le navigateur le placera visuellement en bonne position à la fin du tableau. Cette particularité existe pour des raisons d'accessibilité : les outils de lecture de page peuvent donner immédiatement les informations pertinentes (comme les totaux par exemple) sans que la totalité du tableau doivent être parcourue.

Exemple : tableau avec sémantique

Catalogue Lego Junior

Ecrivez le code HTML du tableau permettant d'obtenir le résultat ci-dessous.

catalogue Lego Junior - tableau à réaliser

Code à compléter

Exercice : catalogue Lego Junior

Une solution possible

Exercice : catalogue Lego Junior

Contenu des cellules

Le contenu d'une cellule peut être bien sûr du texte, mais également n'importe quel autre élément HTML, en particulier des éléments embarqués comme des images.

Exemple : images comme contenu de cellule

Le positionnement de zones de formulaire peut également être facilement réalisée avec un tableau.

Exemple : éléments de formulaire comme contenu de cellule

Catalogue avec images et liens

catalogue avec images et liens

Ecrivez le code HTML du tableau permettant d'obtenir le résultat ci-contre.

Les noms des boîtes sont des liens qui doivent s'ouvrir dans un nouvel onglet. Les liens pointent respectivement sur :

  • http://shop.lego.com/fr-FR/Bo%C3%AEte-de-construction-du-chantier-10667
  • http://shop.lego.com/fr-FR/Bo%C3%AEte-de-construction-du-ch%C3%A2teau-de-la-princesse-10668
  • http://shop.lego.com/fr-FR/Grande-bo%C3%AEte-du-rallye-automobile-10673
  • http://shop.lego.com/fr-FR/Grande-bo%C3%AEte-du-centre-%C3%A9questre-10674
  • http://shop.lego.com/fr-FR/Valise-de-construction-gar%C3%A7on-LEGO-10659
  • http://shop.lego.com/fr-FR/La-valise-de-construction-fille-10660

Les image se trouvent dans le dossier ../exemples/lego. Leur nom est la référence de la boîte et elles sont au format jpg. Par exemple l'image pour la référence 12345 aura comme nom 12345.jpg.

Code à compléter

Exercice : catalogue avec images et liens

Une solution possible

Exercice : catalogue avec images et liens

Fusion de cellules

Fusion horizontale avec colspan

Il est possible de fusionner des cellules horizontales contigües (td ou th) avec l'attribut colspan. La valeur de l'attribut est le nombre de cellules qui sont fusionnées sur la ligne.

fusion horizontale avec colspan
Exemple : fusion horizontale avec colspan

Fusion verticale avec rowspan

La fusion de cellules verticales (td ou th) est possible avec l'attribut rowspan. La valeur de l'attribut est le nombre de cellules qui sont fusionnées dans la colonne.

fusion verticale avec rowspan
Exemple : fusion verticale avec rowspan

Fusion lignes et colonnes

Ecrivez le code HTML du tableau permettant d'obtenir le résultat ci-dessous.

fusion lignes et colonnes

Code à compléter

Exercice : fusion lignes et colonnes

Une solution possible

Exercice : fusion lignes et colonnes