TechWeb
Accueil Codage HTML CSS DESIGN XML LaboCSS

Les tableaux

Structure de base d'un tableau

Un tableau est organisé en lignes elles-mêmes organisées en cellules. La structure s'articule donc autour de trois balises :

structure

<table>
<tr>
<td> ligne 1 colonne 1</td>
<td> ligne 1 colonne 2</td>
<td> ligne 1 colonne 3</td>
</tr>
<tr>
<td> ligne 2 colonne 1</td>
<td>
ligne 2 colonne 2</td>
<td>
ligne 2 colonne 3</td>
</tr>
</table>

qui affiche :

ligne 1 colonne 1 ligne 1 colonne 2 ligne 1 colonne 3
ligne 2 colonne 1 ligne 2 colonne 2 ligne 2 colonne 3

Remarquons que ne nombre d'éléments <td> au sein des éléments <tr> doit rester le même dans la mesure ou chaque ligne possède un même nombre de cellules, nombre qui correspond au nombre de colonnes du tableau.

Pour rendre les bordures de cellules visibles on a recours à l'attribut border ou, plus judicieusement, à une propriété CSS.

Certaines balises <td> peuvent être remplaçées par la balise <th> qui marque une cellule de titre (table head)

<table border="1">
<tr>
<th> titre 1</th>
<th> titre 2</th>
<th> titre 3</th>
</tr>
<tr>
<td> ligne 2 colonne 1</td>
<td> ligne 2 colonne 2</td>
<td> ligne 2 colonne 3</td>
</tr>
</table>

qui affiche :

titre 1 titre 2 titre 3
ligne 2 colonne 1 ligne 2 colonne 2 ligne 2 colonne 3

Fusion de cellules

Extension d'une cellule sur plusieurs colonnes

On utilise l'attribut colspan au sein d'une balise <td> ou <th>. La valeur numérique de cet attribut précise le nombre de colonnes du tableau que couvre la cellule.

<table border="1">
<tr>
<th colspan="3"> titre </th>
</tr>
<tr>
<td> ligne 2 colonne 1</td>
<td> ligne 2 colonne 2</td>
<td> ligne 2 colonne 3</td>
</tr>
</table>

qui affiche :

titre 1
ligne 2 colonne 1 ligne 2 colonne 2 ligne 2 colonne 3

Les trois cellules de la première ligne sont fusionnées.

Autre exemple :

<table border="1""
<tr>
<td colspan="2"> ligne 1 colonne 1 et 2</td>
<td> ligne 1 colonne 3</td>
<td> ligne 1 colonne 4</td>
</tr>
<tr>
<td colspan="3"> ligne 2 colonne 1 2 et 3</td>
<td> ligne 2 colonne 4</td>
</tr>
<tr>
<td> ligne 3 colonne 1</td>
<td colspan="2"> ligne 3 colonne 2 et 3</td>
<td> ligne 3 colonne 4</td>
</tr>
<tr>
<td> ligne 4 colonne 1</td>
<td> ligne 4 colonne 2</td>
<td> ligne 4 colonne 3</td>
<td> ligne 4 colonne 4</td>
</tr>
</table>

qui affiche :

ligne 1 colonne 1 et 2 ligne 1 colonne 3 ligne 1 colonne 4
ligne 2 colonne 1 2 et 3 ligne 2 colonne 4
ligne 3 colonne 1 ligne 3 colonne 2 et 3 ligne 3 colonne 4
ligne 3 colonne 1 ligne 3 colonne 2 ligne 3 colonne 3 ligne 3 colonne 4

Bien évidement, par défaut, lorsque l'attribut colspan n'est pas précisé il vaut 1 (la cellule porte sur une colonne et il n'y a donc pas fusion).

La règle qui impose un même nombre de balises <td> au sein d'une ligne <tr> se généralise ainsi : la somme des valeurs des attributs colspan (valeur=1 par défaut) doit être la même pour toutes les balises <tr> d'une table.

Extension d'une cellule sur plusieurs lignes

On utilise l'attribut rowspan au sein d'une balise <td> ou <th>. La valeur numérique de cet attribut précise le nombre de lignes du tableau que couvre la cellule.

<table border="1">
<tr>
<td rowspan="2"> ligne 1 et 2colonne 1</td>
<td> ligne 1 colonne 2</td>
<td rowspan="3"> ligne 1 2 et 3 colonne 3</td>
<td> ligne 1 colonne 4</td>
</tr>
<tr>
<td rowspan="2"> ligne 2 et 3 colonne 2 </td>
<td> ligne 2 colonne 4</td>
</tr>

<tr>
<td> ligne 3 colonne 1</td>
<td> ligne 3 colonne 4</td>
</tr>
<tr>
<td> ligne 4 colonne 1</td>
<td> ligne 4 colonne 2</td>
<td> ligne 4 colonne 3</td>
<td> ligne 4 colonne 4</td>
</tr>
</table>

qui affiche :

ligne 1 et 2 colonne 1 ligne 1 colonne 2 ligne 1 2 et 3 colonne 3 ligne 1 colonne 4
ligne 2 et 3 colonne 2 ligne 2 colonne 4
ligne 3 colonne 1 ligne 3 colonne 4
ligne 4 colonne 1 ligne 4 colonne 2 ligne 4 colonne 3 ligne 4 colonne 4

Lorsque l'attribut rowspan n'est pas précisé il vaut 1 (la cellule porte sur une ligne et il n'y a donc pas fusion).

Structure avancée

Il est possible de définir un tableau en trois parties :

Chacune des trois parties est constituée d'une suite de lignes <tr>. L'utilité d'une telle distinction est de permettre une mise en forme propre à chaque partie.

<table>
<thead>
<tr>
<td> entête 1</td>
<td> entête 2</td>
<td> entête 3</td>
</tr>
</thead>
<tfoot>
<tr>
<td> bas 1</td>
<td> bas 2</td>
<td> bas 3</td>
</tr>
</tfoot>
<tbody>
<tr>
<td> ligne 1 colonne 1</td>
<td> ligne 1 colonne 2</td>
<td> ligne 1 colonne 3</td>
</tr>
<tr>
<td> ligne 2 colonne 1</td>
<td> ligne 2 colonne 2</td>
<td> ligne 2 colonne 3</td>
</tr>
</tbody>
</table>

qui affiche :

entête 1 entête 2 entête 3
bas 1 bas 2 bas 3
ligne 1 colonne 1 ligne 1 colonne 2 ligne 1 colonne 3
ligne 2 colonne 1 ligne 2 colonne 2 ligne 2 colonne 3
Valid XHTML 1.0 Strict Valid CSS!

Copyright Gabriel Braun 2007