CSS : on reprend tout à zéro ! (12ème épisode)

Par Joe Gillespie

Cet article est le douzième d'une série qui en compte 15. Chaque épisode sera publié bimensuellement dans nos pages.

Je sais bien qu'on utilise des tableaux pour réaliser des mises en page depuis la préhistoire du Web, mais je pense avoir démontré dans ce feuilleton que les mises en page par CSS offrent davantage de possibilités et de souplesse. Les tableaux sont faits pour présenter des données tabulaires, comme on le ferait avec les feuilles de calcul qu'on utilise pour organiser des chiffres ou des mots en rangs et en colonnes.

Autrefois, avec les anciens navigateurs, il était possible de changer l'aspect des tableaux et de leurs cellules en utilisant les différentes propriétés de tableaux : couleurs de fond, images de fond, etc. Beaucoup de ces caractéristiques sont désormais dépassées et ne sont plus valides ; même s'il est encore possible qu'elles fonctionnent, on ne peut plus compter sur elles. D'ailleurs, on n'a jamais vraiment pu compter dessus. Quand on cherchait à placer une image de fond pour un tableau sous Netscape 4 ou une version antérieure, celle-ci apparaissait individuellement dans chacune des cellules, un peu comme quand on regarde à travers un kaléidoscope, ce qui rendait le tout aussi pénible à faire qu'inutile.

Avant, on pouvait sans problème indiquer une hauteur de tableau en pixels, ou encore en pourcentage de la hauteur de la fenêtre, mais ce n'est plus possible. Les tableaux fixent leur propre hauteur en fonction de leur contenu.

La gestion du style des tableaux avec les CSS peut se révéler un peu délicate, et il est difficile de tout prévoir. On peut construire sa propre structure de tableau en CSS à l'aide de display:table; et de display:table-cell;, en considérant que chaque cellule constitue une boîte (div) séparée, mais dans la plupart des cas, il est plus simple de se contenter de fournir les définitions de style pour les éléments HTML du tableau : table, tr, td, th, etc.

tr représente une rangée de tableau, c'est-à-dire une rangée horizontale de cellules. td est une division de rangée de tableau. On peut le voir comme une colonne, mais il ne se comporte pas comme une colonne, et on ne peut pas indiquer une couleur de fond ni un style d'écriture propre à une colonne.

Les tableaux héritent de certains styles des divs auxquelles ils appartiennent, mais pas de tous. Si la partie body de votre page a pour caractéristiques font-family: verdana, arial, sans-serif style et color:#009, le tableau héritera de celles-ci, mais pas de la taille du texte ni de son alignement. Il y a également une hiérarchie. Toute règle s'appliquant à un td prendra le pas sur celle du tr, qui elle-même passera avant toute règle générale de style imposée pour l'élément table, c'est-à-dire le tableau. Vous pouvez tourner ceci à votre avantage. Si vous choisissez le noir comme couleur de fond de tableau, et le blanc comme couleur de fond du td, et si vous donnez au tableau un écartement des cellules de 2 pixels (cellspacing="2"), vous obtiendrez un tableau avec des cellules blanches séparées par une bordure noire de 2 pixels.

1234
1234
1234
Le tableau 1 ci-dessus, plus subtil, présente une couleur de fond de tableau transparente, et une légère teinte de couleur de fond est appliquée aux td.

Bien entendu, vous avez également accès à tous les styles CSS pour les bordures, ce qui signifie que vous n'êtes pas prisonnier des horribles bordures de tableau par défaut en HTML. Vous pouvez également jouer avec les couleurs ou les aspects des bordures pour n'afficher que des lignes verticales ou des horizontales, qui seront pleines, pointillées, hachurées ou autres.

1234
1234
1234
Tableau 2. Selon les données, on veut parfois insister sur les rangées horizontales, ou bien sur les colonnes verticales comme ci-dessus.

Titre 1Titre 2Titre 3Titre 4
1234
1234
Tableau 3. Ici un effet de relief en 3D est créé en modifiant les couleurs de bordures. L'en-tête de tableau th reçoit une couleur de fond plus sombre.

Une autre idée intéressante consiste à attribuer aux tr des images de fond en dégradé de couleur.

Si vous créez une petite image suffisamment haute pour remplir la cellule tout en restant très étroite, disons 8 pixels de large, il sera possible de la répéter horizontalement avec background-repeat: repeat-x, ce qui est plus fin et élégant que des bordures.

Cette petite image (227 octets) peut être répétée horizontalement...

Rangée 1234
Rangée 1234
Rangée 1234
Rangée 1234
Tableau 4. J'ai utilisé un dégradé légèrement plus sombre pour les en-têtes de rangées, et j'ai ajouté une bordure gauche gris pâle pour séparer les colonnes.

Si vous voulez appliquer aux cellules individuelles un style différent de l'ensemble du tableau, vous pouvez le faire en utilisant des définitions de style « en ligne » adjointes aux balises <td> appropriées.

<td style="background-color: #f00">cellule 1</td>
1234
234
123
1234
Tableau 5. Bon d'accord, je suis un peu trop fan de Mondrian, mais l'important c'est de voir qu'on peut appliquer à volonté des styles sur des cellules individuelles !

Cette approche, en revanche, a le désavantage de ne pas permettre l'utilisation d'une feuille de style externe. Tout est gravé dans le code même de la page ; mais on peut se l'accorder, de manière exceptionnelle. Une façon plus adroite de styler rangées et colonnes consiste à les placer au sein de leurs propres div et à les nommer ainsi :

#colonne1 td { ... }
#colonne2 td { ... }

Avec cette méthode, vous bénéficiez d'un certain contrôle sans pour autant devoir recourir à une construction de tableau par div individuelles (ce qui reste une excellente solution, si vous en avez le temps et la patience).

Je n'ai pas placé toutes les déclarations de style dans la page, il y en a trop, mais un coup d'oeil sur le code-source vous permettra de comprendre ce qui se passe.

De nombreuses possibilités vous sauteront à l'esprit quand vous commencerez à styler vos tableaux. Mais non, ce n'est pas obligatoirement barbant de faire des tableaux !

Le mois prochain, nous verrons comment styler des formulaires, ainsi que quelques autres petits détails.

Épisode 13 »

Fiche technique

À propos de l'auteur

Joe Gillespie est un web designer qui partage ses passions pour le design, les CSS et la typographie depuis 8 ans sur son site Web Page Design for Designers. Il a pris sa retraite du Web cette année, au terme de 80 publications mensuelles. Dommage pour nous !

Articles du même auteur

Articles similaires

Voici la liste des dix articles les plus récents en rapport avec cet article :

Débutant

CSS

© 2001-2016 Pompage Magazine et les auteurs originaux - Hébergé chez Nursit.com ! - RSS / ATOM - About this site