J’ai un tableau tout simple, avec un contenu ressemblant à ça :
[code]
Nom
Code
* Note très longue, très verbeuse, sur une seule ligne, etc, etc...
France
fr
Allemagne *
de
[/code]
Donc mes données forment des lignes relativement peu larges.
Mon problème se situe au niveau de mon tfoot, qui comprend une (ou plusieurs) notes longues liées aux données de mon tableau.
Sans la note, j’ai un tableau dont la largeur est très correcte, très lisible.
Avec la note, mon navigateur s’entête à agrandir mon tableau pour que la note soit, dans la mesure du possible, sur une seule ligne.
Or, je voudrais que mes notes ne provoquent pas l’agrandissement de la largeur du tableau, et que des retours à la ligne soient automatiquement ajoutés pour que ma note ne vienne pas exploser le tableau.
J’ai trouvé une solution pour firefox : table tfoot td { width: 1em; }
Mais sous ie, j’ai droit à un retour chariot après chaque mot.
J’aimerai une solution générique, sans forcer la largeur de quoi que ce soit, ni devoir insérer de arbitraire dans ma note de bas de tableau.
Si certains ont des idées, j’ai déjà pas mal épluché les table-layout, overflow & cie sans succès.
Note pour ceux qui penseraient à un overflow : je ne veux pas tronquer mon texte de bas de tableau.
L’ajustement automatiquement des tables à leur contenu me va très bien. Les tableaux ne sont pas saisis en html mais proviennent d’ailleurs, et sont destinés à être envoyés sur d’autres supports ensuite.
En % : ça fait très moche (certains tableaux ne sont vraiment pas larges alors que la page contenant le tableau l’est.
En pixels : ça dépendra trop du contenu, non maitrisé.
Bah en gros tu veux que ton tableau s’ajuste à son contenu SAUF pour une cellule ? Y a, à mon avis, une incohérence dans le raisonnement étant donné que le propre d’un tableau c’est justement d’avoir une taille de colonne et de ligne identique pour TOUTE la colonne ou la ligne ou pas du tout de taille pour TOUTE la colonne ou la ligne et dans ce cas tu laisse le browser se démerder.
Je vois deux solutions :
Soit tu passes par une taille de cellule fixe (solution que tu refuses, mais tu veux le beurre et l’argent du beurre en sus du popotin de la crémière là :))
Soit tu passes pas par un tableau, ce qui te laissera plus de liberté pour bricoler un truc (aucune garantie sur la cohérence de l’affichage par contre).
Y a peut-être la propriété max-width qui pourrait t’aider, mais elle n’est pas prise en compte par IE, faudra donc bidouiller un hack.
Et en forçant (oui, encore) la taille du tableau à un pourcentage de la page ? J’ai pas vérifé, mais si tu dis width=“70%” pour le tableau, celui ci prendra 70% de la fenêtre, donc sur une fenêtre de 1000px, il n’en occupera que 700.
Il n’empêche que sémantiquement ça se tient : J’utilise le pied de tableau pour inclure des informations supplémentaires non liées aux données, et je souhaiterai juste qu’elle s’en tiennent à leur rôle : des informations supplémentaires, qui n’ont pas vocation à gouverner l’apparence de ma table (en gros, elle s’écrase et ne se permet pas de défoncer mon layout).
Sortir l’information du tableau
Mais bon, j’ai aussi l’impression d’avoir atteint les limites des mise en page des tableau…
Si tes donnes supplémentaires n’ont pas lieu d’être formatées de la même manière que le reste de la colonne, alors non sémantiquement parlant elles ne devraient pas se trouver dans la table selon moi. D’autant que là tu fais un colspan, autant rajouter un paragraphe APRES la table pour y inclure une légende, ça règle ton problème.
Bon, ca va finir comme ça. Sauf qu’il va falloir que je gère un type spécial de paragraphe pour que les rédacteurs puissent saisir une note de bas de tableau (une « légende » quoi), leur expliquer comment les utiliser, etc. etc.
Si certains trouvent des astuces, qu’ils n’hésitent pas quand même