5568 sujets

Sémantique web et HTML

Hello,

Je n’ai jamais beaucoup utilisé COL et COLGROUP parce qu’ils ne fonctionnaient pas bien. Mais comme les choses évoluent, j’y reviens. Question style, ça s’est bien arrangé, mais il me reste un problème : l’attribut Title.

Si je donne un attribut Title à un COL ou à un COLGROUP, comme cela est autorisé par HTML 4 (d’après HTML 4, tous deux acceptent l’ensemble d’attribut défini comme “%coreattrs”, dont fait partie Title), je n’obtiens jamais d’infobulle au survol des colonnes ou groupe de colonnes ; que ce soit sous IE8, Opera, Safari (voir plus loin pour une note) ou FireFox.

J’aimerais utilisé des attributs Title sur des COL ou COLGROUP, pour faciliter la lecture de tableaux, en rappelant par exemple le contenu de l’intitulé de la colonne. En effet, quand un tableau est défilé, il ne s’y retrouve pas toujours dans les colonnes.

L’attribut Title fonctionne bien pour les TR, TH et TD, mais pas pour COL et COLGROUP. Pourtant cela est bien prévu par HTML4.

Pourquoi ça ne marche pas ? Pourquoi les auteurs de navigateurs n’y ont-ils pas pensé ?

Note au sujet de Safari : j’ai remarqué qu’il n’applique par correctement les styles sur les TD.

Voici un source HTML de test et d’exemple (ou testez ici : Test COL, COLGROUP et attribut Title) :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
   <HEAD>
      <META http-equiv="content-type" content="text/html; charset=utf-8">
      <TITLE>Page de test</TITLE>
      <META http-equiv="content-style-type" content="text/css">
      <STYLE type="text/css">

         TABLE {
            border-style: solid;
            margin: auto;
         }

         TD {
            border-style: solid;
         }

         .group1 {
            background-color: red;
         }

         .col1 {
            background-color: blue;
         }
      </STYLE>
   </HEAD>
   <BODY>
      <TABLE id="test">
         <COLGROUP class="group1" title="Test 1">
            <COL span="1" class="col1" title="Test 2">
            <COL span="1" class="">
            <COL span="1" class="">
         </COLGROUP>
         <COLGROUP class="">
            <COL span="3" class="">
         </COLGROUP>
         <THEAD>
            <TR>
               <TH scope="col">*</TH>
               <TH scope="col">1</TH>
               <TH scope="col">2</TH>
               <TH scope="col">3</TH>
               <TH scope="col">4</TH>
               <TH scope="col">5</TH>
            </TR>
         </THEAD>
         <TBODY>
            <TR title="Test 3">
               <TH scope="row" title="Test 4">A</TH>
               <TD title="Test 5">A.1</TD>
               <TD>A.2</TD>
               <TD>A.3</TD>
               <TD>A.4</TD>
               <TD>A.5</TD>
            </TR>
            <TR>
               <TH scope="row">B</TH>
               <TD>B.1</TD>
               <TD>B.2</TD>
               <TD>B.3</TD>
               <TD>B.4</TD>
               <TD>B.5</TD>
            </TR>
            <TR>
               <TH scope="row">C</TH>
               <TD>C.1</TD>
               <TD>C.2</TD>
               <TD>C.3</TD>
               <TD>C.4</TD>
               <TD>C.5</TD>
            </TR>
            <TR>
               <TH scope="row">D</TH>
               <TD>D.1</TD>
               <TD>D.2</TD>
               <TD>D.3</TD>
               <TD>D.4</TD>
               <TD>D.5</TD>
            </TR>
            <TR>
               <TH scope="row">E</TH>
               <TD>E.1</TD>
               <TD>E.2</TD>
               <TD>E.3</TD>
               <TD>E.4</TD>
               <TD>E.5</TD>
            </TR>
         </TBODY>
      </TABLE>
   </BODY>
</HTML>


Vous constaterez que l’on peut obteni l’affichage des infobulles Test 3, Test 4 et Test 5, mais pas les autres. Note : pour obteni Test 3 il faut vous survoler une des cellules blanches de la première ligne du tableau (pas l’entête), pour Test 4, survoler la cellule d’entête de la première ligne, et pour Test 5, survoler la première cellule en partant de la gauche de la première ligne.

Actuellement j’utilise des attributs Title sur tous les TD, mais je trouve cette solution trop lourde et j’aimerais pouvoir les appliquer sur des COL ou COLGROUP, afin de pouvoir économiser la quantité de source HTML produit. Ce serait bienvenu de pouvoir faire l’économie de cette redondance.
Modifié par hibou57 (18 Jul 2010 - 05:48)
Hello,

Pour commencer, pour rendre ce tableau plus accessible, il faudrait utiliser l'attribut scope sur tes éléments TH.

Ensuite, je n'ai jamais pensé à utiliser title sur des éléments COL, c'est assez peu conventionnel et je doute que l'effet, d'un point de vue ergonomique, soit heureux.

hibou57 a écrit :
Pourquoi ça ne marche pas ? Pourquoi les auteurs de navigateurs n’y ont-ils pas pensé ?

J'allais dire que ça ne marche pas parce que le COL est recouvert par plein d'autres éléments (cf. CSS 2.1), mais l'empilement des éléments n'a pas l'air d'être une gêne pour d'autres éléments HTML. Donc je sais pas trop, de subtilités d'implémentation sans doute.

Tu peux à la rigueur ouvrir des rapports de bug du côté de Mozilla et de Webkit. Ou chercher s'il n'en existe pas déjà. Par contre, il me semble que les navigateurs ne sont pas tenus, selon la spec HTML 4, de rendre le contenu de l'attribut title perceptible, et qu'ils font un peu ce qu'ils veulent.

En passant, pas de E final à «test». Smiley cligne

Ah oui, validator.nu me donne une série d'erreurs pour ta page. Tu peux regarder de ce côté.
Modifié par Florent V. (17 Jul 2010 - 21:49)
Florent V. a écrit :
Hello,

Pour commencer, pour rendre ce tableau plus accessible, il faudrait utiliser l'attribut scope sur tes éléments TH. [...]

En passant, pas de E final à «test». Smiley cligne [...]

Ah oui, validator.nu me donne une série d'erreurs pour ta page. Tu peux regarder de ce côté.

Tout ça est corrigé maintenant, et merci pour la note au sujet de l’attribut “scope”.

Après avoir corrigé les erreurs indiquées par validator.nu que je ne connaissais pas, je pensais que les chose changeraient peut-être. Mais finalement rien.

Florent V. a écrit :
Ensuite, je n'ai jamais pensé à utiliser title sur des éléments COL, c'est assez peu conventionnel et je doute que l'effet, d'un point de vue ergonomique, soit heureux.

Ça c’est le signe que je devrais oublier une mauvaise idée alors.


Florent V. a écrit :
Tu peux à la rigueur ouvrir des rapports de bug du côté de Mozilla et de Webkit. Ou chercher s'il n'en existe pas déjà. Par contre, il me semble que les navigateurs ne sont pas tenus, selon la spec HTML 4, de rendre le contenu de l'attribut title perceptible, et qu'ils font un peu ce qu'ils veulent.

Oui, mais ce ne sont pas les seuls, alors j’ai un doute sur l’impact d’un tel rapport de bug. S’il faudrait en plus que tout le monde suive, c’est pas gagné. Je vais au moins tenté l’expérience sur le forum Opera, je verrai les réactions, et si c’est positif, je le ferai ailleurs.

Après tout, ça fonctionne bien pour TR, alors pourquoi pas pour COL/COLGROUP.

Hibou57 a écrit :
Question style, ça s’est bien arrangé,

Quoique je viens de vérifier que “visibility: collapse;” ne fonctionne pas sous IE7 (mais quand-même OK avec IE8).
Modifié par hibou57 (18 Jul 2010 - 06:01)
Title ne s'utilise que sur la très petite liste d'éléments pour lesquels des implémentations existent réellement (au-delà du simple affichage du tooltype par les navigateurs), c'est à dire essentiellement A, INPUT (pas submit ni image), TEXTAREA, SELECT, ABBR, ACRONYM, IFRAME, FRAME, AREA.