Entrée | Sommaire | Historique | Structure | Entête et Corps | Textes | Liens | Listes | Images | Tableaux | Cadres | CSS | Propriétés CSS | Annexes

Mise en forme des Tableaux

Sommaire

Mise en forme des tableaux:

Il existe 4 balises principales pour définire un tableau:

  1. La balise <table> qui permet d'annoncer l'ouverture d'un tableau et de contrôler une partie de son apparence.
  2. La balise <tr> qui permet de créer une ligne.
  3. La balise <th> qui permet de créer une cellule de titre.
  4. La balise <td> qui permet de créer une cellule de donnée.

Un tableau doit être contenu entre les balises <table> et </table>.
Le contenu du tableau doit être remplit ligne par ligne.
Chaque ligne doit commencer par la balise <tr> et se terminer par la balise </tr>.
Une ligne est constituée de cellules qui doivent être délimité par les balises <th> et </th> pour les cellules correspondant à des titres, et par <td> et </td> pour les cellules correspondant à des données.

Ainsi un tableau avec 2 cellules de titre sur la première ligne, et 2 cellules de données sur la deuxième ligne doit être codé de la manière suivante:

Code d'un tableau avec 2 cellules de titre, et 2 cellules de données.
Code Effet
<table border="2" > ouverture du tableau ayant des bordures de 2 pixels
<tr> début d'une ligne (ligne 1)
    <th>titre 1</th> cellule de titre (cellule 1 de la ligne 1)
    <th>titre 2</th> cellule de titre (cellule 2 de la ligne 1)
</tr> fin de la ligne (fin de la ligne 1)
<tr> début d'une ligne (ligne 2)
    <td>donnée 1</td> cellule de donnée (cellule 1 de la ligne 2)
    <td>donnée 2</td> cellule de donnée (cellule 2 de la ligne 2)
</tr> fin de la ligne (fin de la ligne 2)
</table> fin du tableau

Le résultat est le tableau suivant:

titre 1 titre 2
donnée 1 donnée 2

Retour au sommaire

La balise <table>

La balise <table> permet d'introduire un tableau dans un paragraphe. La fin du tableau doit être indiqué par la balise </table>.

Les attributs de la balise <table>
width="nb%" : définit la largeur de la table.
cols="..." : définit le nombre de colonnes de la table.
border="..." : définit la largeur en pixel des bordures du tableau.
cellspacing="..." : définit l'espacement entre les cellules d'un tableau.
cellpadding="..." : définit l'espacement entre les bordures d'une cellule et ce qu'elle contient.
frame="..." : définit les bords visibles d'une table (les autres sont donc invisibles), l'attribut peux prendre les valeurs suivantes:
rules="..." : définit les bordures intérieur visibles d'une table (les autres sont donc invisibles), l'attribut peux prendre les valeurs suivantes:

Attention, certains navigateurs comme IE 5.5 gèrent mal ces attributs si un seul des 2 est utilisé. il est donc préférable de définir les 2 attributs même si vous n'avez besoin que d'un seul.

Certains attributs sont déclassée en XHTML en faveur des feuilles de style:
bgcolor: permet de définir la couleur de fond d'un tableau de la même manière que dans la balise <body> .

Exemple:
<table width="80%" border="10" cellspacing="15" cellpading="8">
<tr>
    <td>première cellule</td>
    <td>deuxième cellule</td>
    <td>troisième cellule</td>
</tr>
<tr>
    <td>quatrième cellule</td>
    <td>cinquième cellule</td>
    <td>sixième cellule</td>
</tr>
<table>

Résultats:

première cellule n°1 deuxième cellule troisième cellule
quatrième cinquième cellule sixième cellule

Dans le tableau ci-dessus, les bordures externes du tableau (attribut border) devraient avoir une taille de 10 pixels, les cellules devraient être séparées les unes des autres (attribut cellspacing) par 15 pixels, et l'espacement entre le bord des cellules et leur contenu (attribut cellpadding) devrais être de 8 pixels.

Retour au sommaire

Balise <tr>

Cette balise permet d'introduire une ligne et d'en contrôler certains aspects.
Une ligne commence par <tr> et se termine par </tr> . c'est entre ces deux balises que sont crées les cellules (avec <th></th> ou <td></td>) et leur contenus.

Les atributs de la Balise <tr> :
align="..." : permet d'aligner le contenu des cellules.
char="..." : définit le caractère d'alignement des contenus des cellules lorsque la valeur de l'attribut align est "char" .
charoff="..." : permet de donner la position en pourcentage de la cellule, ou en pixels du premier caractère d'alignement (valeur de l'attribut char) sur une ligne.
valign="..." : permet de définir l'alignement verticale du contenu des cellules de la ligne
Certaines attributs ne sont plus utilisées en XHTML car les attributs sont définis dans les feuilles de style :
bgcolor="..." : définit la couleur d'arrière plan de la cellule.

Retour au sommaire

Balises <th> et <td>

Cette balises permettent de créer des cellules de titre (th) ou de donnée (td) dans un tableau. Une cellule de titre (header) est délimité par les balises <th> et </th>
La cellule de donnée (data) est délimité par les balises <td> et </td>

On peux noter qu'une cellule n'ayant aucun contenu apparaîtra quand même dans le tableau, mais de manière différente qu'une cellule ayant un contenu. Par exemple, elle paraîtra pleine, contrairement à une cellule ayant un contenu qui apparaît creuse.

Les attributs des balises <th> et <td> :
axis="..." : nom abrégé
axes="..." : noms des axes définissant des en-têtes de colonne et de ligne correspondant à la cellule.
rowspan="..." : nombre de ligne sur lesquelles s´étend une cellule
colspan="..." : nombre de colonnes sur lesquelles s´entend une cellule
align="..." : permet d´aligner le contenu des cellules.
char="..." : définit le caractère d'alignement des contenus des cellules lorsque la valeur de l'attribut align est "char" .
charoff="..." : permet de donner la position en pourcentage de la cellule, ou en pixels du premier caractère d´alignement (valeur de l'attirbut char) sur une ligne.
valign="..." : permet de définir l'alignement verticale du tableau
Certaines balises ne sont plus utilisées en XHTML car les attributs sont définis dans les feuilles de style :
nowrap="..." : empêche le retour a la ligne dans la cellule.
bgcolor="..." : définit la couleur d'arrière plan de la cellule.
height="..." : définit la hauteur de la cellule.
width="..." : définit la largeur de la cellule.

Créer un tableau de cellule n'est pas très difficile, mais, peux devenir plus complexe lorsque des cellules s'etendent sur plusieurs lignes et/ou plusieurs colonnes.
Dans ce cas, on utilise l'attribut rowspan="..." pour définir le nombre de ligne sur lesquelles s'étend la cellule, et l'attribut colspan="..." pour définir le nombre de ligne sur lesquelles s'étend la cellule

Il faut surtout penser qu'une cellule n'est définie qu'une seule fois dans un tableau. ainsi si une cellule s'étend sur 2 colonnes, dans un tableau qui en contient 3, il ne sera en fait déclaré que 2 cellules. De même si une cellule s'étend sur 2 lignes, elle sera déclarée lors de la première ligne, et sera automatiquement prise en compte lors de la deuxième ligne. Ceci est aussi vrai lorsque la cellule s'étend à la fois sur plusieurs lignes, et plusieurs cellules.
Certain tableau pouvant être assez complexe, il est donc parfois utile de le tracer sur une feuille avant de le créer pour bien déterminer le nombre exacte de cellules que contient le tableau, et comment les cellules devrons être définies.

Exemple d'utilisation des attributs colspan et rowspan des balises <th> et <td>
On veux créer un tableau ayant l'aspect suivant (les chiffres identiques appartiennent en fait à une seule cellule).
1 2 2 3
1 4 5 5
1 6 5 5
Code Effet
<table align="center" width="80%" border="2">
<tr>
    <td rowspan="3" > 1 </td>
    <td colspan="2" > 2 </td>
    <td> 3 </td>
</tr>
    <td> 4 </td>
    <td rowspan="2" colspan="2" > 5 </td>
</tr>
<tr>
    <td>6</td>
</tr>
</table>
1 2 3
4 5
6

Retour au sommaire

La balise <caption> :

Cette balise qui doit se trouver juste après la balise <table> et avant la première ligne permet de donner un titre au tableau, et de l'afficher. Le titre est compris entre les balises <caption> et </caption>

Attributs de la balise <caption>
align : permet d'aligner horizontalement la légende.
Exemple d'utilisation de la balise caption
Code Résultat
<table border="2">
<caption>Titre du tableau</caption>
<tr>
    <th>titre 1</th>
    <th>titre 2</th>
</tr>
<tr>
    <td>donnée 1</td>
    <td>donnée 2</td>
</tr>
</table>
Titre du tableau
titre 1 titre 2
donnée 1 donnée 2

Retour au sommaire

Groupes de lignes : Balises <thead> , <tbody> , et, <tfoot>

Ces balises permettent de grouper des lignes pour leur donner des attributs de mise en forme commun. Pour chaque type de balise, les lignes et cellules appartenant au groupe sont situées entre les balises d'ouverture et les balises de fermeture de groupe de ligne.
La balise <thead> permet de définir des attributs communs pour les premières cellules du tableau (un seul groupe de cellules) comprises entre les balises <thead> et </thead>.
La balise <tfoot> permet de définir des attributs communs pour les cellules dernières cellules du tableau (un seul groupe de cellules), comprises entre les balises <tfoot> et </tfoot>.

La balise <tbody> permet de définir des attributs communs pour les cellules du milieu du tableau (un ou plusieurs groupes peuvent être définit) comprises entre les balises <tbody> et </tbody>.

Un groupe de cellule compris entre les balises <thead> et </thead> doit se situer en début de description de tableau, puis, devrais venir le groupe compris entre les balises <tfoot> et </tfoot>, et enfin, un les groupes compris entre les balises <tbody> et </tbody> .
Il est possible d'alterner des groupes utilisant les propriétés du tableau (non entouré par des balises <thead> , <tbody> ou <tfoot>), et des groupes délimités par les balises <tbody> et </tbody> . Il est d'ailleurs possible d'utiliser plusieurs groupes compris entre les balises <tbody> et </tbody> et de leur donner des propriétés différentes.

Aucun des groupes n'est obligatoire, un tableau peux très bien n'avoir aucun groupe de cellule, ou uniquement un groupe d'en-tête, ou bien uniquement un groupe de bas de tableau,...

Attributs des balises <thead> , <tbody> et <tfoot>
align="..." : permet d'aligner le contenu des cellules.
char="..." : définit le caractère d'alignement des contenus des cellules lorsque la valeur de l'attribut align est "char" .
charoff="..." : permet de donner la position en pourcentage de la cellule, ou en pixels du premier caractère d'alignement (valeur de l'attribut char) sur une ligne.
valign="..." : permet de définir l´alignement verticale du contenu des cellules dans leur case:
exemple permettant de situer la position des différents groupes de lignes
Les cellules suivantes sont comprises entre les balises <thead align="right" > et </thead>
head 1 head 2 head 3
head 4 head 5 head 6
Les cellules suivantes sont comprises entre les balises <tfoot align="left" > et </tfoot>
foot 1 foot 2 foot 3
foot 4 foot 5 foot 6
Les cellules suivantes ne sont comprises entre aucune balise de type thead, tbody, ou tfoot.
basic 1.1 basic 2.1 basic 3.1
basic 4.1 basic 5.1 basic 6.1
Les cellules suivantes sont comprises entre les balises <tbody align="center" > et </tbody>
body 1.1 body 2.1 body 3.1
body 4.1 body 5.1 body 6.1
Les cellules suivantes ne sont comprises entre aucune balise de type thead, tbody, ou tfoot.
basic 1.2 basic 2.2 basic 3.2
basic 4.2 basic 5.2 basic 6.2
Les cellules suivantes sont comprises entre les balises <tbody align="justify" > et </tbody>
body 1.2 body 2.2 body 3.2
body 4.2 body 5.2 body 6.2
Les cellules suivantes ne sont comprises entre aucune balise de type thead, tbody, ou tfoot.
basic 1.3 basic 2.3 basic 3.3
basic 4.3 basic 5.3 basic 6.3

Retour au sommaire

Groupes de colonne: Balises <colgroup> et <col />

Ces balises permettent de grouper des colonnes pour leur donner des attributs de mise en forme commun.

Les différences entre les balises <colgroup> </colgroup> et <col /> sont d'une part la balise <col /> peut être contenu dans la balise <colgroup> </colgroup>, et d'autre part que si l'attribut rules de la balise table est définit à groups, les colonnes regroupées par la balise <colgroup> seront encadrés, mais pas les colonnes regroupées par la balise <col />. La balise <col /> peut aussi être utilisée seule pour créer un groupe d'une colonne.
Par exemple, la balise <colgroup> peut réunir 3 colonnes qui auront toutes un taille de 20% du tableau.
Avant de refermer cette balise en utilisant </colgroup>, il est possible de demander grâce à une balise <col /> que le contenu des cellules de la première colonne soit aligné à gauche, grâce à une autre balise <col /> que le contenu des cellules de la deuxième colonne soit centré , et grâce à d'une dernière balise <col /> que le contenu des cellules de la troisième colonne soit aligné à droite.

Les deux balises ont les même attributs.

Attention, à partir du moment ou des attributs sont définis pour un groupe de colonne, ces attributs sont valables pour toute la suite du tableau. De plus, s'il reste des colonnes non groupées à droite du dernier groupe de colonne, d'autres balises peuvent être utilisées pour grouper ces colonnes.
Par contre, toute déclaration de groupe de colonne au delà du nombre de colonne ne sera pas pris en compte.
On peux aussi noter que si une cellule s'étend sur plusieurs colonnes, c'est les propriétés du premier groupe de colonne qui est pris en compte.

Attributs des balises <colgroup> et <col />
span="..." : nombre de colonne dans le groupe.
width="..." : largeur de chaque colonne du groupe
align : définir l'alignement horizontale du contenu des cellules du groupe.
char="..." : définit le caractère d'alignement des contenus des cellules lorsque la valeur de l'attribut align est "char" .
charoff="..." : permet de donner la position en pourcentage de la cellule, ou en pixels du premier caractère d´alignement (valeur de l'attribut char) sur une ligne.
valign="..." : définir l'alignement verticale du contenu des cellules du groupe.
exemple d'utilisation des balises <colgroup> et <col />
Code du tableau Résultat
<table border="border" bgcolor="#ffdddd">
<tr>
<th colspan="3">Ces cellules ne sont pas comprises dans un groupe de colonnes</th>
</tr>
<tr>
    <td>cellule de base</td>
    <td>cellule de base</td>
    <td>cellule de base</td>
</tr>
<colgroup span="2" width="30%">
    <col align="left" />

    <col align="center" />
</colgroup>
<tr>
    <td colspan="2" >groupe de 2 colonnes dont chaque cellule a une largeur de 30% du tableau</td>
    <td>cellule de base</td>
</tr>
<tr>
    <td >contenu aligné à gauche</td>
    <td >contenu centré</td>
    <td>cellule de base</td>
</tr>
<col align="right" />
<tr>
    <td>contenu aligné à gauche</td>
    <td>contenu centré</td>
    <td>groupe d'une colonne dont le contenu des cellules est aligné à droite.</td>
</tr>
<tr>
    <td>contenu aligné à gauche</td>
    <td>contenu centré</td>
    <td>contenu aligné à droite</td>
</tr>
</table>
Ces cellules ne sont pas comprises dans un groupe de colonnes
cellule de base cellule de base cellule de base
groupe de 2 colonnes dont chaque cellule a une largeur de 30% du tableau cellule de base
contenu aligné à gauche contenu centré cellule de base
contenu aligné à gauche contenu centré groupe d'une colonne dont le contenu des cellules est aligné à droite.
contenu aligné à gauche contenu centré contenu aligné à droite

Retour au sommaire

Entrée | Sommaire | Historique | Structure | Entête et Corps | Textes | Liens | Listes | Images | Tableaux | Cadres | CSS | Propriétés CSS | Annexes


1 juillet 2002
Stéphane Chalamet : stephane.chalamet@free.fr