Jour 69 - Landmarks ARIA ou éléments HTML 5 ? (1/3)
Pourquoi et comment structurer une page ? A quoi servent vraiment les landmarks ARIA et les éléments sectionnant HTML 5 ?
Ce que j’ai fait :
- regarder la vidéo How ARIA landmark roles help screen reader users(lien externe) de Léonie Watson
- lire l’article Les régions ou landmarks ARIA(lien externe) d’Orange
- lire la fiche Gabarit général(lien externe) du Guide de l’Intégrateur
Référentiels et spécifications
- HTML - Living Standard(lien externe) du WHATWG (Web Hypertext Application Technology Working Group)
- Accessible Rich Internet Applications (WAI-ARIA) 1.1 (Recommendation)(lien externe) du W3C (World Wide Web Consortium)
- Accessible Rich Internet Applications (WAI-ARIA) 1.2 (Working draft)(lien externe) du W3C
- WAI-ARIA Authoring Practices 1.1 (Working Group )(lien externe) du W3C
- ARIA in HTML (Editor’s draft)(lien externe) du W3C
Ce que j’ai appris
De l’importance de structurer une page
Pourquoi et pour qui ?
Structurer un contenu (qu’il soit web ou non) signifie le découper en sections logiques, afin de faciliter sa compréhension et son utilisation. Il s’agit par exemple de regrouper certains contenus par section, d’ajouter une hiérarchie de titres ou même de mettre en valeur les mots ou concepts qui paraissent importants.
Pour une grande partie des internautes, la structuration d’une page web est avant tout visuelle. La mise en forme aide en effet à comprendre la fonction de certaines parties de la page. Par exemple :
-
le titre de la page généralement de grande taille et situé en haut du document
-
un menu de navigation sous forme horizontale avec une certaine mise en exergue
Pour autant, une structuration purement visuelle est loin d’être suffisante. En effet, pour une personne aveugle qui ne perçoit aucune mise en forme, le menu de navigation ne représente rien d’autre qu’une liste de liens, comme il peut y en avoir d’autres dans la page. Il est donc important de fournir aussi dans le code un moyen de distinguer les éléments importants d’une page.
Pour plus d’informations sur comment déterminer les différentes sections d’une page, il existe de nombreuses ressources :
-
la fiche Gabarit général(lien externe) du Guide de l’intégrateur (Éléments HTML5 et landmarks ARIA - Comment déterminer ce qu’est…)
-
la notice Découper une page web en sections logiques(lien externe) de Mozilla
-
le guide ARIA Landmarks Example(lien externe) du W3C
Comment ?
Une fois les sections principales bien définies, il y a deux manières de matérialiser leur structure dans le code :
-
les rôles landmarks ARIA
-
les éléments HTML 5
Historiquement, le langage HTML manquait de balises sémantiques permettant de désigner les différentes sections d’une page telles que le header, le footer ou la navigation. HTML 4 utilisait essentiellement la notion de sections (matérialisés par des éléments <div>
) définies par des titres (<h1>
, <h2>
, <h3>
, <h4>
, <h5>
ou <h6>
). HTML 5 introduit de nouveaux éléments, permettant de mieux caractériser les différentes sections de la page : <header>
, <footer>
, <nav>
, <main>
…
De la même manière, les rôles landmarks ARIA permettent d’indiquer ce que contiennent les différents blocs qui constituent une page : role="navigation"
, role="main"
, role="search"
… A noter que les landmarks ARIA permettent également de couvrir les applications web, ce qui n’est pas nécessairement le cas du HTML 5.
Il s’agit donc de caractériser sémantiquement, c’est à dire de donner une information sur le rôle et le contenu des différentes sections qui composent une page.
Quels avantages ?
Utiliser des marqueurs sémantiques comme des éléments HTML 5 ou des landmarks ARIA, facilite grandement la consultation d’une page web pour de nombreux internautes.
Les personnes aveugles, utilisant des lecteurs d’écran, bénéficient ainsi d’informations sur les régions principales de la page et savent à quoi elles correspondent : le menu de navigation principal peut être distingué d’une simple liste de liens grâce à la balise <nav>
ou au landmark ARIA role="navigation"
.
Les personnes naviguant grâce à leur clavier qui peuvent aussi bénéficier de fonctionnalités de navigation leur permettant de passer rapidement d’une section à l’autre. Il est à noter cependant que si la plupart des lecteurs d’écran mettent à disposition ces fonctionnalités, les navigateurs n’implémentent pas encore nativement de fonctionnalité de navigation dédiée au clavier. La mise en place de landmarks ne signifie donc pas qu’il faut se passer de liens d’évitement.
Sur cette vidéo intitulée How ARIA landmark roles help screen reader users(lien externe), Léonie Watson fait une démonstration de l’utilisation des rôles landmarks par les lecteurs d’écran : Jaws, par exemple, utilise le symbole ‘;’ pour passer d’une région à l’autre. A chaque landmark atteint, Jaws annonce le type de contenu dont il s’agit.
Vous pouvez simuler dans votre navigateur la navigation clavier des lecteurs d’écran. L’extension Firefox Landmarks(lien externe) de Matthew Tylee Atkinson implémente des raccourcis clavier qui permettent de naviguer d’une région à l’autre. Le nom de la région atteinte apparaît alors visuellement, de la même manière qu’il serait restitué vocalement par un lecteur d’écran.
Rôles landmarks ARIA versus éléments HTML
Typologie comparative
J’avais évoqué brièvement dans un de mes premiers articles, Structure de page, les différents éléments permettant de sectionner une page. Voici un tableau récapitulatif plus complet des éléments HTML 5, mis en perspectice avec les rôles landmarks correspondants (il s’agit d’une traduction du tableau proposé par le W3C sur sa page ARIA Landmarks Example(lien externe)):
Éléments HTML | Rôles landmark ARIA |
---|---|
aside |
complementary |
footer |
contentinfo , dans le contexte de l'élémént body .
L'élément footer n'est pas équivalent au rôle landmark contentinfo quand il est descendant des éléments HTML suivants :
- article
- aside
- main
- nav
- section
|
form |
form , lorsqu'il a un nom accessible donné par les attributs aria-labelledby , aria-label ou title |
header |
banner , dans le contexte de l'élémént body .
L'élément header n'est pas équivalent au rôle landmark banner quand il est descendant des éléments HTML suivants :
- article
- aside
- main
- nav
- section
|
main |
main |
nav |
navigation |
section |
region lorsqu'il a un nom accessible donné par les attributs aria-labelledby , aria-label ou title |
pas d'équivalent | search |
Cas d’usages
-
il ne peut y avoir qu’une seule balise
<main>
et qu’un seulrole="main"
par page -
la balise
<header>
peut être utilisée plusieurs fois dans une page, maisrole="banner"
ne doit être employé qu’une seule fois -
la balise
<footer>
peut être utilisée plusieurs fois dans une page, maisrole="contentinfo"
ne doit être employé qu’une seule fois - la balise
<nav>
etrole="navigation"
peuvent être employés plusieurs fois dans une page pour identifier les menus de navigation principaux et secondaires. Quand plusieurs d’entre eux sont présents dans une page, il peut être intéressant de les différencier grâce à l’attributaria-label
:<nav aria-label="Menu principal">[...]</nav> <nav aria-label="Menu secondaire">[...]</nav>
role="article"
ne fait pas partie des rôles landmarks ARIA mais des rôles de structuration du document. Son équivalent HTML 5 est<article>
.
Dès lors que nous connaissons les différents éléments et landmarks permettant de structurer correctement une page web, comment les utiliser ? Dans un second article, j’aborde les recommandations données à ce sujet par le W3C et le RGAA (Référentiel Général d’Amélioration de l’Accessibilité).