Formation :
HTML en détails
XHTML en détails
Webinnov_tableaux
HTML - Les Tableaux
01 - Introduction :

Ce chapitre va vous demander beaucoup d'attention.

Maîtriser les tableaux, c'est maîtriser la mise en page de votre document. Cependant l'apparition du xhtml a fait évoluer cette technique de mise en page avec les tableaux qui n'est plus conseillée mais a mon avis elle reste plus abordable pour les débutants.

02 - La composition d'un tableau :

Le tableau est composé de trois Balises :

<TABLE>
  <TR>
    <TD>
    </TD>
  </TR>
</TABLE>

La balise <TABLE> qui définit le début et la fin du tableau.
La balise <TR> qui définit le début d'une ligne et la fin de cette ligne.
La balise <TD> qui définit une cellule dans une ligne.

Dans l'exemple ci-dessus, le tableau est composé d'une ligne contenant une cellule.

Voici un exemple d'un tableau composé d'une ligne contenant deux cellules.

<TABLE>
  <TR>
    <TD>
    </TD>
    <TD>
    </TD>
  </TR>
</TABLE>

Voir le résultat final

03 - La bordure d'un tableau :

Il est possible de définir la taille de la bordure grâce à l'attribut BORDER de la balise <TABLE>.

Voir le code :

<table border="1">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

Voir le résultat final

Pour supprimer la bordure, il faut mettre 0 pour valeur.


Comme vous avez pu remarquer l'attribut BORDER ne supprime que le relief de la bordure.
Pour supprimer "définitivement" la bordure il faut ajouter l'attribut CELLSPACING avec la valeur 0.

Retester avec ces deux attributs avec la valeur 0.


Puis avec CELLSPACING="0" et BORDER="1".

Voir le code :

<table border="1"; CELLSPACING="0">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

Voir le résultat final

En conclusion :

- l'attribut BORDER définit l'épaisseur du relief,
- l'attribut CELLSPACING définit l'épaisseur de la bordure

04 - Les lignes :

Comme nous l'avons vue précédemment, la balise <TR></TR> définit une ligne.

Elle doit obligatoirement contenir une balise <TD> et ne doit jamais contenir une autre balise <TR>.

Le nombre de balises <TR> dépend du nombre de lignes désirées.

Pour une ligne on aura un <TR>, pour deux lignes on aura deux <TR> à la suite, pour trois lignes on aura trois <TR>...

05 - Les paramètres de hauteur et largeur :

Dans cette partie nous allons étudier les attributs HEIGHT et WIDTH de la balise <TABLE>.

La hauteur d'un tableau : HEIGHT.

La hauteur d'un tableau peut être en %, alors la taille du tableau dépendra de la taille de la fenêtre.
A prendre en compte, les fenêtres réduites par l'utilisateur, la taille de l'écran 640 X 480 ou 800 X 600...
On écrira <TABLE HEIGHT="100%">, le tableau prendra toute la hauteur de la fenêtre.
La hauteur peut être aussi en pixel.
On écrira <TABLE HEIGHT="100">

Il est rare de définir la hauteur d'un tableau.

La longueur d'un tableau : WIDTH.

La longueur d'un tableau peut être en %, alors la taille du tableau dépendra de la taille de la fenêtre.
A prendre en compte, les fenêtres réduites par l'utilisateur, la taille de l'écran 640 X 480 ou 800 X 600...
On écrira <TABLE WIDTH="100%">, le tableau prendra toute la longueur de la fenêtre.

La longueur peut être aussi en pixel. On écrira <TABLE WIDTH="100">

Si vous écrivez en % cela donnera :

Voir le code :

<table width="100%, height="100%" border="1">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

Voir le résultat final

Si vous écrivez en pixel cela donnera :

Voir le code :

<table width="100, height="100" border="1">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

Rappel : il n'est pas nécessaire de préciser 100px, car ce sont les pixels qui sont pris par défaut.

Voir le résultat final

06 - Les colonnes :

Les colonnes d'un tableau sont définies par la balise <TD></TD>.

Une balise <TD> ne doit jamais contenir une autre balise <TD>.

Le nombre de balises <TD> dépend du nombre de colonnes désirées.
Pour une colonne on aura un <TD>, pour deux colonnes on aura deux <TD> à la suite, pour trois colonnes on aura trois <TD>...

Pour les tableaux simple (sans fusion de cellules), vous devez avoir le même nombre de <TD> dans chaque balise <TR>. Si vous avez un tableau de trois colonnes et de six lignes alors vos six balises <TR> doivent avoir trois balises <TD>.

Exercice :

Voici deux tableaux à faire :

- Un tableau 5 lignes 3 colonnes, hauteur de 40% et 40 px de largeur sans épaisseur.
- Un tableau 3 lignes 5 colonnes, hauteur de 60% et 100% de largeur.

Voir le code :

<table width="40" border="1" height="40%" cellspacing="0">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

<table width="100%" border="1" height="60%" cellspacing="0">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

Voir le résultat final

07 - La hauteur et la largeur d'un cellule :

On peut définir la hauteur et largeur de chaque cellule.

La hauteur d'une cellule : HEIGHT.

La hauteur d'une cellule peut être en % si le tableau est en %. La somme des % des hauteurs des lignes doit être égale au % de la hauteur du tableau.

On écrira <TD HEIGHT="10%">, la cellule prendra 10% de la hauteur du tableau.

La hauteur peut être aussi en pixel. Les cellules sans % se partageront le reste de la hauteur du tableau de façon égale.
La hauteur d'une cellule peut être en Pixel si le tableau est en Pixel. Dans ce cas là, la somme des hauteurs des lignes doit être égale à la hauteur du tableau, sauf si la hauteur du tableau n'a pas été définie. On écrira <TD HEIGHT="100">

Attention, dans un tableau simple (sans fusion de colonnes) toutes les cellules de la même ligne doivent avoir la même hauteur.

La longueur d'une cellule : WIDTH.

La longueur d'une cellule peut être en % si le tableau est en %. La somme des % des longueurs des colonnes doit être égale au % de la longueur du tableau. Les cellules sans % se partageront le reste de la longueur du tableau de façon égale.
On écrira :
<TD WIDTH="10%">, la cellule prend 10% de la longueur du tableau

La longueur peut être aussi en pixel.

La longueur d'une cellule peut être en Pixel si le tableau est en Pixel. Dans ce cas là, la somme des longueurs des colonnes doit être égale à la longueur du tableau, sauf si la longueur du tableau n'a pas été définie.

On écrira :

<TD WIDTH="10">
08 - La marge intérieur des cellules :

Vous pouvez définir la marge intérieur des cellules mais pas d'une cellule seulement.

Pour cela il faut utiliser l'attribut CELLPADDING de la balise <TABLE>.

On écrira (en px):

<TABLE CELLPADDING="10">
09 - La couleur d'une cellule :

Chaque cellule peut être mis en couleur, grâce à l'attribut BGCOLOR de la balise <TD>.

On écrira :

<TD BGCOLOR="red">

Je mets à votre disposition les couleurs web.

Netscape, ne tient pas compte de la couleur de la cellule si celle-ci est vide :

<TD BGCOLOR="red"></TD>

Il faut donc écrire :

<TD BGCOLOR="red"> </TD>
10 - Exercice de révision :

Pour créer ce document, il faut utiliser les balises ainsi que leurs attributs :

<TABLE>
<FONT>
<BR>
<IMG>
l'image à utiliser <img src="vignette.png" width="154" height="46">
<P>

Ce qu'il faut reproduire (Voici le texte)

Voir le code :

<table width="100%" border="0" bordercolor="#000000" cellspacing="20">
<tr bgcolor="#000000">
<td align="left" valign="middle"><font color="#FFFFFF"><b>Colonne 1</b></font></td>
<td valign="middle" align="center" height="20"><font color="#FFFFFF"><b>Colonne 2</b></font></td>
<td align="right" valign="middle" height="20"><font color="#FFFFFF"><b>Colonne 3</b></font></td>
</tr>
<tr>
<td align="left" valign="top">
<P align="justify"><img src="vignette.png" width="154" height="46" align="left" vspace="0" hspace="0">
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
molestie consequat, vel illum dolore eu feugiat nulla facilisis. Eros
Et Accumsan dignissim qui blandit praesent luptatum zzril delenit augue
duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
eleifend option congue nihil imperdiet doming id quod mazim. </P>
</td>
<td align="left" valign="top">
<P align="justify"><img src="vignette.png" width="154" height="46" align="left" hspace="10">
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
molestie consequat, vel illum dolore eu feugiat nulla facilisis. Eros
Et Accumsan dignissim qui blandit praesent luptatum zzril delenit augue
duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
eleifend option congue nihil imperdiet doming id quod mazim. </P>
</td>
<td align="left" valign="top">
<P align="justify"><img src="vignette.png" width="154" height="46" align="absbottom"><BR>
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
molestie consequat, vel illum dolore eu feugiat nulla facilisis. Eros
Et Accumsan dignissim qui blandit praesent luptatum zzril delenit augue
duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis
eleifend option congue nihil imperdiet doming id quod mazim. </P>
</td>
</tr>
</table>


Nous allons aborder les fusions de cellules.
Dave2

Sachez que plus un tableau comporte des cellules fusionnées, plus il y a des risques que le navigateur l'interprète mal.
Pour éviter ce problème, j'insère des tableaux dans la cellule.
Si vous montez les tableaux à la main, je vous conseille fortement de faire un petit dessin avant. Avec ce croquis, vous pouvez déterminer le nombres de colonnes et de lignes de base de votre tableau, et visualiser les cellules à fusionner. Pour les exemples nous nous servirons de ce croquis.

Votre premier exercice consiste à créer ce tableau de base sans fusion de cellules avec les chiffres, d'une hauteur de 200 et d'une longueur de 200.

Voir le code sans fusion :

<table width="200" border="1" height="200">
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr align="center">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr align="center">
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>

Voir le résultat

11 - Les fusions verticales de cellules :

Pour la fusion de cellule verticale, faut utiliser l'attribut ROWSPAN de la balise <TD>, dont la valeur est égale au nombre de cellules fusionnées.

On l'écrit : <TD ROWSPAN="2"> pour deux cellules fusionnés.

Nous allons fusionner la cellule 1 avec la cellule 5.

La cellule 1 reste et la cellule 5 se fusionne avec elle, la cellule 5 n'a plus lieu d'être.
Donc dans le code, vous allez d'abord écrire dans la balise <TD> qui correspond à la cellule 1 : <TD ROWSPAN="2"> (on fusionne 2 cellules) et vous allez supprimer la cellule 5 donc la balise <TD> 5 </TD>.

Voir le code de base :

<table width="200" border="1" height="200">
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr align="center">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr align="center">
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>

Voir le code après fusion :

<table width="200" border="1" height="200">
<tr align="center">
<td rowspan="2">1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr align="center">
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr align="center">
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>

Voir le résultat

Nous allons fusionner la cellule 4 avec la cellule 8,12 et 16.

C'est la même démarche. La cellule 4 reste, la cellule 8,12 et 16 se fusionnent à la cellule 4 et n'ont plus lieu d'être.

Voir le code de base :

<table width="200" border="1" height="200">
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr align="center">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr align="center">
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>

Voir le code après fusion :

<table width="200" border="1" height="200">
<tr align="center">
<td rowspan="2">1</td>
<td>2</td>
<td>3</td>
<td rowspan="4">4</td>
</tr>
<tr align="center">
<td>6</td>
<td>7</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
</tr>
<tr align="center">
<td colspan="3">13</td>
</tr>
</table>

Voir le résultat final

12 - Les fusions horizontales de cellules :

Pour la fusion de cellule horizontale, il faut utiliser l'attribut COLSPAN de la balise <TD>, dont la valeur est égale au nombre de cellules fusionnées.

On l'écrit : <TD COLSPAN="2"> pour deux cellules fusionnés.

Nous allons fusionner la cellule 13 avec la cellule 14 et 15.

Le principe est le même qu'avec ROWSPAN. La cellule 13 reste, la cellule 14 et15 se fusionnent à la cellule 13 et n'ont plus lieu d'être.

Voir le code de base :

<table width="200" border="1" height="200">
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr align="center">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr align="center">
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
</tr>
</table>

Voir le code après fusion :

<table width="200" border="1" height="200">
<tr align="center">
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr align="center">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr align="center">
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
<tr align="center">
<td colspan="3">13</td>
<td>16</td>
</tr>
</table>

Voir le résultat final

left home right