Accédez à nos cours concernant des domaines et thématiques différentes. Vous pouvez aussi contribuer en rédigeant des articles.
Consulter les coursParcourez notre annuaire d’écoles, instituts et universités du monde. Si votre école n’est pas listée, vous pouvez l’ajouter très facilement.
Consulter les écolesAccédez à notre messagerie instantanée pour échanger avec d’autres membres inscrits et aussi les invités. Aucune inscription n’est obligatoire.
Accéder au tchatOn a traité pas mal de choses à propos des tableaux que ça soit la syntaxe XHTML ou l'habillage par les CSS. Maintenant on va passer au côté 'accessibilité des tableaux' ![]()
On évoque généralement l'accessibilité des tableaux, pour les raisons suivantes :
Remarquez le tableau, il est un peu difficile à consulter, les cellules 'Total' et '75' apparaissent un peu décalées vers la droite, du fait que le navigateur text-seul Lynx centre horizontalement les en-têtes 'th' ;L'élément caption est un outil excellemment fiable, qui permet de passer un titre concis et significatif aux tableaux. La légende permet de remplir plusieurs rôles :

L'heure est venue de vous parler de l'attribut summary (résumé), que vous pouvez spécifier à l'élément table. Le contenu de l'attribut summary est destiné strictement aux navigateurs vocaux, et il est généralement lu après la légende du tableau. Supposons le code XHTML suivant :
<table summary="Les répercussions des investissements étrangers sur le niveau d'emploi au Maroc.">
<legend>Les investissements étrangers au Maroc.</legend>
<tr>
<td>Bla Bla</td>
<td>Bla Bla</td>
</tr>
<tr>
<td>Bla Bla</td>
<td>Bla Bla</td>
</tr>
</table>
la sortie sonore de ce bout de code XHTML, sous Jaws ou Home Page Reader (HPR) sera :
Légende de la table : Les investissements étrangers au Maroc. Sommaire : Les répercussions des investissements étrangers sur le niveau d'emploi au Maroc."
Notez que le contenu de l'attribut summary n'est pas repris par les navigateurs graphiques. Par contre il est restitué par les navigateurs vocaux et indexé par les moteurs de recherche.
Evitez de dupliquer le titre du tableau (caption) dans son résumé (summary). Car ce dernier doit fournir une information complémentaire à la légende, enrichie et plus longue.
C'est vrai qu'on peut simuler facilement des en-têtes aux tableaux en passant outre les balises 'th'. En terme d'accessibilité ça n'ajoute aucune valeur, car les en-têtes effectifs sont mieux restitués que les en-têtes fictifs dans les navigateurs vocaux. Faisons la comparaison entre les deux tableaux suivant :
<table>
<tr>
<td><strong>Nom</strong></td>
<td><strong>Age</strong></td>
</tr>
<tr>
<td>Peter</td>
<td>30</td>
</tr> <tr>
<td>François</td>
<td>40</td>
</tr>
</table>
Le navigateur vocal, ignorant complètement la structure
relationnelle du tableau, lira les données tabulaires d'une façon linéaire :
Nom, Age, Peter, 30, François, 40.
<table>
<tr>
<th>Nom</th>
<th>Age</th>
</tr>
<tr>
<td>Peter</td>
<td>30</td>
</tr>
</table>
Cette fois-ci, le navigateur n'aura pas de problème à appréhender l'organisation structurelle du tableau, et va le restituer d'une manière facile à suivre par les mal-voyants :
Nom, Peter, Age, 30, Nom, François, Age, 40.
Il est parfois opportun de mentionner explicitement aux navigateurs vocaux, les relations existant entre les en-têtes et les cellules de données tabulaires, surtout dans le cas de tableaux plus ou moins compliqués, dont la compréhension par les lecteurs d'écran n'est pas garantie.
Pour remplir cette mission vous avez le choix entre l'attribut scope qu'on a déjà vu, ou bien la paire id et header. Ces attributs permettent aux lecteurs d'écran de connaître les cellules qui sont couvertes par tel ou tel en-tête.
Cet attribut est reconnu par les deux éléments 'th' et 'td', sauf qu'il généralement utilisé avec les en-têtes 'th'. Il accepte deux valeurs : row (ligne) ou col (colonne). Exemple :
L'attribut scope peut remplacer avantageusement le couple id et header pour les tableaux dont la structure est régulière (en-têtes de tableaux 'th' avec l'attribut scope).
Pour déclarer qu'un en-tête est relié à telle ou telle cellule, vous devez tout d'abord identifier l'élément 'th' en lui attribuant un id, puis mentionner grâce à l'attribut header les cellules concernées par l'en-tête, en lui affectant l'id de ce dernier.
Exemple : pour relier la cellule 'Japon' à l'en-tête 'pays', mettez : <th id="pays">Pays</th> ..... <td header="pays">Japon</td>. Vous pouvez aussi lier une cellule à deux ou plusieurs en-têtes, en séparant par des espaces les id passés à l'attribut header. Exemple complet :
<table>
<tr>
<th id="pays">Pays</th>
<th id="capitale">Capitale</th>
<th id="monnaie">Monnaie</th>
</tr>
<tr>
<th headers="pays" id="japon">Japon</th>
<td headers="japon capitale">Tokyo</td>
<td headers="japon monnaie">Yen</td>
</tr>
<tr>
<th headers="pays" id="Maroc">Maroc</th>
<td headers="maroc capitale">Rabat</td>
<td headers="maroc monnaie">Dirham</td>
</tr>
</table>
| Pays | Capitale | Monnaie |
|---|---|---|
| Japon | Tokyo | Yen |
| Maroc | Rabat | Dirham |
Un navigateur vocal tel que Jaws ou HPR lira : Pays, Japon, Capitale, Tokyo, Monnaie, Yen, Pays, Maroc, Capitale, Rabat, Monnaie, Dirham.
Les attributs id et header sont opportuns dans le cas de tableaux complexes où il y a par exemple des cellules fusionnées.
Dans le cas où les en-têtes sont dotés de contenu trop long (par exemple 20 caractères ou plus), il convient de les abréger pour réconforter la lecture aux personnes non-voyantes. Il serait trop gênant de répéter à chaque fois un en-tête trop long. Exemple :
<tr>
<th abbr="pays">pays</th>
<th id="pib">produit intérieur brut</th>
</tr
Les navigateurs vocaux liront : 'PIB' au lieu de 'produit intérieur brut'. Notez que l'attribut abbr est aussi valable pour les éléments 'td'.
Les tableaux destinés à la mise en page et la disposition du contenu, doivent être formés uniquement avec les éléments : table, tr et td ainsi que les propriétés CSS (formatage et mise en forme des tableaux avec les styles CSS) ou les attributs XHTML dépréciés. Si vous mettez des en-têtes, une légende (caption) et un résumé (summary), ils seront restitués par les navigateurs non graphiques, ce qui pourra être source de gêne, étant donné que ces tableaux ne sont pas destinés à présenter des données tabulaires.
Comme je viens de le mentionner en haut, la lecture du contenu des tableaux par les lecteurs d'écran se fait de manière linéaire et séquentielle : cellule par cellule, de gauche à droite, de haut en bas. Pour mieux comprendre prenons l'exemple suivant :
<table>
<tr>
<td>Téléchargements scripts</td>
<td>Tutoriels</td>
</tr>
<tr>
<td>PHP</td>
<td>PHP</td>
</tr>
<tr>
<td>JavaScript</td>
<td>JavaScript</td>
</tr>
</table>
| Téléchargements scripts | Tutoriels |
| PHP | PHP |
| JavaScript | JavaScript |
Le tableau sans quadrillage ci-dessus est utilisé pour l'agencement des deux menus 'Téléchargements scripts' et 'Tutoriels' ne pose pas de problèmes dans les navigateurs graphiques. Mais dans les navigateurs vocaux, il sera lu d'une façon trop
gênante :
Téléchargements scripts, Tutoriels, PHP, PHP, JavaScript, JavaScript.
Il convient de recoder le tableau de cette manière :
<table>
<tr>
<td >Téléchargements scripts</td>
<td >PHP</td>
<td >JavaScript</td>
</tr>
<tr>
<td >Tutoriels</td>
<td >PHP</td>
<td >JavaScript</td>
</tr>
</table>
| Téléchargements scripts | PHP | JavaScript |
| Tutoriels | PHP | JavaScript |
Restitution vocale : Téléchargements scripts, PHP, JavaScript, Tutoriels, PHP, JavaScript.
Ce dernier tuyau se rapporte aux navigateurs graphiques. En fait l'utilisation des unités absolues (px, cm, mm, pica etc.) peut poser certains problèmes :
lorsque vous redimensionnez la fenêtre du navigateur, la largeur du tableau ne s'adapte pas à la nouvelle largeur de la fenêtre, ce qui peut faire cacher une partie du tableau et faire apparaître la barre de défilement horizontale. Cela va rendre la consultation du tableau plus pénible, car il faut se servir de l'ascenseur horizontal pour voir le reste du tableau qui a été masqué.
les tableaux ayant une largeur absolue, ne s'adaptent non plus à la résolution de l'écran, ce qui peut poser le même problème précité. Pour vous faire apprendre davantage, supposons que vous voulez créer un tableau qui occupe presque toute la largeur de la fenêtre. Vous allez mettre "width: 1000px", ça va épuiser toute la largeur de l'écran s'il est ajusté sur une résolution de 1024 x 768. Lorsque le même tableau tourne dans un écran dont la résolution est 800 x 600, le tableau sera coupé. pour consulter sa partie droite, il faut utiliser la barre de défilement horizontale.
Par contre si vous lui avez spécifié la largeur en unité relative "width: 100%", il tournera sans aucun problème sous les deux écrans.
Dans le prochain chapitre on va apprendre à formater les listes à puces et les listes numérotées avec les propriétés CSS.