5568 sujets

Sémantique web et HTML

Bonjour,

J'ai décidé de m'intéresser un peu plus aux tables dont j'ignorais volontairement jusqu'à maintenant certains paramètres.

Mais déjà, certaines choses m'échappent (en fait, les mêmes choses qui ont fait que j'ai toujours évité les tables) :

1/ Apparence :
- l'attribut frame de <table> ne semble pas déconseillé alors qu'il agit uniquement sur l'apparence. La propriété border ne permet-elle pas exactement la même chose (oui en théorie, mais j'entends en pratique) ?

- idem pour rules, qui agit sur un peu tout, puisque, outre les border, il supprime l'espacement entre cellules.

- même problème avec cellspacing et cellpadding qui resterait utile, notamment pour la compatibilité entre navigateurs.

Le tout se résumé à : puis-je n'utiliser aucun attribut d'apparence pour <table>, comme il conviendrait normalement, et être assurer de pouvoir faire la même chose en CSS, sur tous les navigateurs (au moins IE6,7,FF2,Op9 et Safari 2 -je ne me fais pas de soucis pour Konqueror Smiley smile -).

2/ En-tête :
<th> est une cellule d'en-tête.
<thead> regroupe les cellules d'en-tête.
Mais <thead> doit être unique.
Or, si j'ai des noms de colonnes ET des noms de lignes, je n'ai pas de <thead> pour la rangée d'entête. Il n'y a pas de balise pour une colonne d'en-tête.
Donc, n'est-il pas mieux d'utiliser <thead> uniquement pour le titre du tableau, en ne mettant pas de caption si doublon (de toutes façon, l'UA lira thead en premier et summary sera là pour les aides techniques en alternatif) ? Ou ne pas utiliser du tout <thead>.

J'ai eu beau chercher, j'ai trouvé pas mal de sources qui se contredisent, notamment sur l'emploi de <th> avec <thead>.

Merci.

Edit : je viens d'essayer également col et colgroup, qui ne fonctionnent pas du tout pour la modification d'autre chose que width ! Super. Même white-space est inactif. Et en css, pas moyen d'avoir *.
Modifié par talvins (13 Jan 2008 - 14:30)
Bon, au final, c'est pas bien compliqué : les tables sont assez mal décrites dans la spec de HTML et les navigateurs respectent très mal ces même spec.

colgroup et col, autant les oublier, sauf pour width qui peut être utilisé pour les valeurs proportionnelles. Pour le reste (styles CSS ou attributs char et charoff), c'est strictement inutile.

Pour le stylage, on peut un peu tout faire avec CSS, mais pas toujours sous IE.

Quasiment aucun navigateur ne respecte la très utile valeur "0" pour colspan et rowspan, qui permet de spécifier toutes les colonnes ou lignes, de la celulle actuelle à la fin de ligne/colonne.

Pour thead, comme tfoot, cela sert uniquement à définir une partie qui sera répétée sur chaque page à l'impression. Il y a en fait une confusion du à l'utilisation excessive du mot "en-tête" à la place de titre. <th> n'a pas, à mon avis, à être appelé cellule d'en-tête (comme on peut le lire partout, y compris le dépliant de R.Goetter), mais cellule de titre de colonne ou de ligne.

En conclusion, la gestion des tables est quand même assez merdique.
talvins a écrit :
Il y a en fait une confusion du à l'utilisation excessive du mot "en-tête" à la place de titre. <th> n'a pas, à mon avis, à être appelé cellule d'en-tête (comme on peut le lire partout, y compris le dépliant de R.Goetter), mais cellule de titre de colonne ou de ligne.

Si on lit partout «cellule d'en-tête», c'est parce que la spécification HTML 4 utilise «table header cell» pour parler de TH. C'est effectivement une appellation trompeuse, car la notion de «header» ne correspond à priori qu'à un en-tête (élément répété en haut de page sur plusieurs pages, me dit en substance le Oxford advanced learner's dictionary).

Par contre, la traduction française «corrige» ce défaut avec la dénomination suivante: «cellule de rubrique».
Oui, en effet, c'est mieux comme ça.

Mais, dans la série des merdiques, la non-implémentation de la valeur 0 pour colspan et rowspan, c'est vraiment dommage. Même Opera ne le respecte pas. Heureusement FF sauve la mise.
talvins a écrit :
Mais, dans la série des merdiques, la non-implémentation de la valeur 0 pour colspan et rowspan, c'est vraiment dommage.

Je me demandais un peu: pour quel usage est-ce qu'on aurait besoin de ce mécanisme?
(Je suppose qu'il y en a, mais là tout de suite ça ne me vient pas.)
Modifié par Florent V. (14 Jan 2008 - 12:20)
Si jamais tu ne te souviens pas de ce que devrait faire la valeur 0, elle indique que le span s'effectue de la cellule actuelle à la fin de la ligne ou colonne.

C'est donc utile si on a pas envie de compter le nombre de cases jusqu'à la fin. Exemple : un titre de colonnes intermédiaire puis des cellules vides sur le reste de la ligne.
<thead> est très pratique pour distinguer les titres de colonnes et les titres de lignes (tout deux représentés par l'élément <th>).

Dans le CSS, on peut ainsi utiliser le sélecteur thead th {} pour styler les titres de colonnes (dont on veut souvent centrer le contenu) et le sélecteur tbody th {} (ou plus simplement th {} dans de nombreux cas) pour styler les titres de lignes (dont le contenu est traditionellement aligné à gauche).
Modifié par pierredureau (14 Jan 2008 - 15:09)