Comment intégrer des tableaux HTML accessibles et conformes au RGAA ?
Série Tableaux accessibles
L’utilisation de tableaux HTML peut se révéler complexe pour les personnes aveugles et les personnes très malvoyantes.
Dans cette série de deux articles, nous vous expliquons comment rendre vos tableaux conformes au RGAA, qu’ils contiennent des données, ou qu’ils soient utilisés à des fins de mise en page.
Par « tableau », on entend tout élément HTML natif table
, mais aussi tout élément construit avec le motif de conception ARIA Table (propriété role="table"
).
Tableaux de données
Qu’est-ce qu’un tableau de données ?
Un tableau de données contient des informations organisées en deux dimensions (colonnes et lignes).
Si le tableau possède un titre, celui-ci sera aussi restitué par les technologies d’assistance.
Un tableau de données doit être équipé d’en-têtes de colonne et/ou d’en-têtes de ligne.
Note : nous parlerons des tableaux qui contiennent des cellules fusionnées ou des sous-contextes dans un prochain article. En effet, ces tableaux-là sont considérés comme des tableaux « complexes », et requièrent des adaptations spécifiques pour l’accessibilité.
Pour l’instant, concentrons-nous sur les tableaux simples !
Exemples de tableaux de données simples
Article | Quantité | Prix | Sous-total |
---|---|---|---|
Pelle | 1 | 10,00 € | 10,00 € |
Sécateur | 1 | 15,00 € | 15,00 € |
Plantoir | 2 | 8,00 € | 16,00 € |
Afficher le code
Jours | Horaires habituels | Vacances scolaires |
---|---|---|
Lundi | Fermé | Fermé |
Mardi | 12 h – 19 h | 12 h – 18 h |
Mercredi | 10 h – 19 h | 10 h – 18 h |
Jeudi | 12 h – 19 h | 12 h – 18 h |
Vendredi | 12 h – 20 h | 12 h – 18 h |
Samedi | 10 h – 19 h | 10 h – 18 h |
Dimanche | Fermé | Fermé |
Afficher le code
Quels sont les impacts des tableaux inaccessibles pour les personnes en situation de handicap ?
Les tableaux de données ont un fort impact sur la navigation des personnes aveugles ou très malvoyantes qui utilisent des lecteurs d’écran et des loupes vocalisées.
Comprendre le tableau grâce à ses en-têtes
En effet, dans un tableau, la navigation peut se faire selon deux dimensions.
Les en-têtes de colonne et de ligne sont restitués par les lecteurs d’écran : ces en-têtes doivent donc être correctement déclarés en HTML pour permettre aux utilisateurs et utilisatrices de comprendre la relation entre les différentes cellules du tableau.
Comprendre le tableau grâce à son titre
De plus, les lecteurs d’écran fournissent des raccourcis spécifiques permettant à une personne aveugle ou très malvoyante de lister tous les tableaux présents dans une même page web, pour faciliter une navigation qui peut souvent être longue et fastidieuse.
Si chaque tableau possède un titre, il sera possible de parcourir ou d’éviter le tableau facilement, en fonction de l’information que l’utilisatrice recherche.
Ainsi, quand un tableau possède un titre, celui-ci doit être pertinent, c’est-à-dire que le titre doit permettre de comprendre le thème et les données du tableau.
Comment intégrer un tableau de données de manière accessible ?
- Intégrez les cellules d’en-têtes de ligne et de colonne dans des balises
<th>
(critère 5.6 [A] du RGAA 4). - Si le tableau contient à la fois des en-têtes de colonne et de ligne, ajoutez un attribut
scope="col"
aux balises<th>
servant d’en-tête de colonne, et un attributscope="row"
aux balises<th>
servant d’en-tête de ligne (critère 5.7 [A] du RGAA 4). - Si possible, donnez un titre à chaque tableau. Si le titre est présent à proximité du tableau et permet de l’identifier, intégrez-le dans une balise
<caption>
à l’intérieur de la balise<table>
[1] (critère 5.4 [A] du RGAA 4 et critère 5.5 [A] du RGAA 4).
Vous utilisez WordPress ? Apprenez à créer des tableaux de données accessibles avec WordPress.
Tableaux de mise en forme
Maintenant que vous savez rendre accessibles les tableaux de données simples, intéressons-nous aux tableaux de mise en forme.
Qu’est-ce qu’un tableau de mise en forme ?
Un tableau de mise en forme consiste à utiliser les balises <table>
et <td>
pour mettre en forme du contenu (aligner du texte et des images, par exemple).
Un tableau de mise en forme ne sert pas à structurer des données : on n’utilise jamais de balise <th>
dans un tableau de mise en forme, par exemple.
Or, les tableaux de mise en forme ont longtemps servi (et continuent parfois de servir…) à la mise en page des sites web. Ils sont aussi souvent utilisés pour l’intégration des lettres d’information envoyées par e-mail, pour pallier le mauvais support du HTML par les clients de messagerie.
En soi, utiliser un tableau de mise en forme pour intégrer du contenu HTML peut ne pas poser de problème pour l’accessibilité, si l’on pense bien à utiliser la propriété ARIA role="presentation"
.
Voyons quelques exemples !
Exemples de tableaux de mise en forme
Exemple 1
Sur le site de Radio France, les communiqués de presse sont structurés à l’aide de tableaux de présentation.
Exemple 2
Voici un autre exemple de tableau de mise en forme : celui-ci liste des pages de résultats dans un moteur de recherche.
Afficher le code
Ici, l’utilisation d’un tableau n’était franchement pas nécessaire. Le tableau aurait dû être remplacé par une liste.
Mais, puisque ce contenu a été intégré sans liste, alors le tableau doit obligatoirement posséder la propriété ARIA role="presentation"
.
Quels sont les impacts des tableaux de mise en forme pour les personnes handicapées ?
Les personnes aveugles et très malvoyantes qui utilisent un lecteur d’écran parcourent le contenu du tableau de manière séquentielle. Elles ont donc besoin que l’information ne repose pas sur la position visuelle des éléments, mais qu’elle suive un ordre logique dans le code source.
Il faut donc prêter attention à l’ordre de lecture des tableaux par les lecteurs d’écran, qui correspond à l’ordre du code source. On parle alors de « contenu linéarisé ».
À savoir : les cellules fusionnées ne seront restituées qu’une seule fois [2].
Comment intégrer un tableau de mise en forme de manière accessible ?
Pour résoudre le problème et rendre un tableau de mise en forme accessible, il y a plusieurs précautions à prendre.
- Assurez-vous que le contenu linéarisé du tableau soit compréhensible (critère 5.3 [A] du RGAA 4) :
- présentez le contenu du tableau dans le même ordre que le code source ;
- ou remplacez le tableau par une mise en forme CSS ;
- faites des tests à l’aide de lecteurs d’écran [3].
- Ajouter une propriété
role="presentation"
à la balisetable
(critère 5.3 [A] du RGAA 4). Quand cette propriété ARIA est présente, c’est comme si la balisetable
devenait invisible aux lecteurs d’écran : ceux-ci ignoreront tout simplement la présence du tableau concerné, qui est juste là pour mettre en forme (c’est-à-dire : faire joli), mais n’a aucune valeur sémantique. Il ne doit donc pas être restitué comme un vrai tableau de données. C’est pourquoi les informations présentes dans un tableau de mise en forme doivent obligatoirement être structurées de manière sémantique à l’aide de balises HTML appropriées, telles que des titres, des paragraphes, des listes, etc. (Critère 8.9 [A] du RGAA 4). - Supprimer toutes les balises et attributs relatifs aux tableaux de données : balises
<caption>
,<th>
,<thead>
,<tfoot>
, propriétés ARIArole="rowheader"
,role="columnheader"
et attributsscope
,headers
etaxis
(critère 5.8 [A] du RGAA 4).
Exemple d’ordre illogique
Le tableau suivant liste des ingrédients et des ustensiles pour une recette de cuisine. Il contient des cellules fusionnées :
Ingrédients | farine | Ustensiles | 1 bol |
lait | 1 fouet | ||
oeufs | 1 poêle |
Afficher le code
Le problème, c’est que ce tableau va être restitué de la manière suivante par les lecteurs d’écran :
- Ingrédients
- farine
- Ustensiles
- 1 bol
- lait
- 1 fouet
- œufs
- 1 poêle
Cet ordre de restitution n’est pas logique, parce que le lait et les œufs sont restitués dans la section « Ustentiles », alors qu’ils devraient être restitués parmi les ingrédients.
Pour corriger, voici ce que serait la bonne façon de transmettre l’information aux personnes aveugles et malvoyantes, grâce à un ordre de restitution logique :
- Ingrédients
- farine
- lait
- œufs
- Ustensiles
- 1 bol
- 1 fouet
- 1 poêle
Pour que les lecteurs d’écran restituent l’information dans cet ordre de lecture précis, il vaudrait mieux utiliser deux listes titrées et les mettre en forme à l’aide de CSS, plutôt qu’un tableau HTML. Voici ce que ça donnerait :
Ingrédients
- farine
- lait
- œufs
Ustensiles
- 1 bol
- 1 fouet
- 1 poêle
Afficher le code
Conclusion
Comment rendre accessibles des tableaux de données simples et des tableaux de mise en forme ? Résumons !
Tableaux de données simples
- Donnez un titre à chaque tableau de données à l’aide d’une balise
<caption>
. - Structurez chaque tableau de données avec des cellules d’en-têtes
<th>
. Si les cellules d’en-têtes sont réparties sur des colonnes et des lignes, pensez à déclarer le type d’en-tête concerné à l’aide d’attributsscope="col"
pour les en-têtes de colonne, ouscope="row"
pour les en-têtes de ligne.
Tableaux de mise en forme
- Ajoutez la propriété ARIA
role="presentation"
sur la balisetable
pour que votre tableau de mise en forme ne soit pas restitués comme un tableau de données. - Structurez le contenu de chaque tableau de mise en forme de manière sémantique, comme vous le feriez s’il n’y avait pas de tableau : en utilisant des paragraphes, des titres, des listes, etc.
Dans le prochain article de cette série, nous nous attaquerons à un plus gros morceau : l’accessibilité des tableaux de données complexes. Promis, ça va bien se passer.
À bientôt !Ressources
- How screen readers navigate data tables
- Les impacts des tableaux sur les utilisateurs
- Usage des tableaux dans le rapport Web Almanac de 2022 (en anglais)
- Table Like It’s 2023, un article d’Amy Carney avec de nombreuses ressources
- Tables Tutorial
Connaissez-vous l’accessibilité sur le bout des doigts ?
Vous codez, mais l’accessibilité a encore des secrets pour vous ? Notre formation certifiante Développer des sites web accessibles et conformes au RGAA peut vous aider !
3 jours de formation pour :
- intégrer les bonnes pratiques de l’accessibilité du web dans votre pratique professionnelle ;
- maîtriser le développement de sites, d’applications web ou de contenus accessibles ;
- utiliser les outils de tests (lecteur d’écran, inspecteur d’interface, afficheur d’arbre accessible, etc.).
Cerise sur le gâteau : cette formation peut être financée à 100 % par votre CPF (Compte Personnel de Formation).
N’hésitez pas à nous contacter pour recevoir un devis gratuit et sans engagement !
Demander un devis gratuit