Sur le respect des standards
Si l'on s'en tient à HTML, il y a deux «tests» possibles:
1. La
validité de la syntaxe et du vocabulaire. Sur ce plan, les tableaux de mise en page sont tout aussi valides que les tableaux de données.
2. La
conformité au standard, qui ne peut être évaluée strictement que via des outils tels que des suites de tests (automatisés ou non) aux critères précis, autrement dit des référentiels de conformité. Il n'y en a pas pour HTML. Bien sûr on peut toujours, en étant moins précis, lire le texte de la spécification et voir si elle interdit les tableaux de mise en page (via notamment des clauses strictes: MUST/MUST NOT), les déconseille simplement (SHOULD/SHOULD NOT), suggère d'autres solutions (MAY), ou ignorent cette problématique. Résultat des courses:
- HTML 4.01: Tables should not be used purely as a means to layout document content […]. Authors should use style sheets to control layout rather than tables.»
- HTML5: «Tables must not be used as layout aids. Historically, some Web authors have misused tables in HTML as a way to control their page layout. This usage is non-conforming […]»
Donc en HTML 4 (ou XHTML 1) il est possible d'utiliser des tableaux pour de la mise en page mais c'est déconseillé, et en HTML5 c'est interdit.
Sur la question du pragmatisme
Mais pour revenir à notre sujet, la conformité stricte à tout prix reste pour moi de la pureté théorique, par opposition à des décisions pragmatiques.
Les effets concrets des tableaux de mise en page sur l'accessibilité sont connus, et il y a des techniques pour éviter les problèmes de ce type (notamment éviter l'utilisation des attributs ou éléments typiques d'un tableau de données bien fichu).
Par ailleurs dans certains cas précis il se peut qu'un tableau de mise en page soit la solution la plus efficace, soit par nécessité de compatibilité avec de vieux navigateurs (IE7), soit parce qu'on a besoin d'utiliser des propriétés de mise en page des tableaux dont CSS 2.1 ne fournit pas l'équivalent (rowspan/colspan notamment).
Sur la question de la bidouille
Le contraire de la bidouille c'est savoir ce que tu fais, pourquoi tu le fais, quelles sont les conséquences principales. C'est aussi veiller à faire du code que d'autres personnes raisonnablement compétentes pourront comprendre, pour limiter les risques de création de bugs lors des maintenances et évolutions du code.
En l'occurrence ici la solution avec un tableau de mise en page est sensiblement plus claire et directe que celle que je propose à coup de double positionnement absolu et de pseudo-élément créé en CSS. Cette dernière est clairement plus haute sur l'échelle de la bidouille (qui est une échelle progressive et pas un un état binaire), et par ailleurs plus limitée car elle s'accommodera
moins bien voire pas du tout de problèmes tels qu'un texte trop long, une image trop petite ou pas chargée.
tournikoti a écrit :
Ce n'est pas parce qu'une solution proposé fonctionne qu'elle est automatiquement correcte.
Exactement. C'est bien pour ça que la solution que je proposais à base de positionnement absolu n'est sans doute pas bonne, même si intéressante à titre d'exercice.
href a écrit :
Effectivement, la solution de fvsch est absolument remarquable...!
C'est gentil mais en fait non, elle n'est pas terrible car pas robuste.
Modifié par fvsch (16 Jun 2012 - 16:00)