WAI-ARIA
WAI-ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) est une spécification du W3C qui ajoute des attributs sémantiques au HTML : rôles, états et propriétés. Ces attributs permettent aux technologies d'assistance de comprendre les composants d'interface dynamiques que le HTML natif ne peut pas décrire seul. La version 1.2 est la recommandation officielle depuis juin 2023.
Un bouton personnalisé en <div>, un système d'onglets, une notification asynchrone : le HTML natif ne sait pas décrire ces composants aux lecteurs d'écran. WAI-ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) est la spécification du W3C qui comble ce vide. La version 1.2, publiée en juin 2023, est la recommandation officielle.
#Rôles, états, propriétés
La spécification repose sur trois types d'attributs :
- Les rôles indiquent ce qu'est un élément :
role="tab",role="dialog",role="alert". Chaque rôle a des contraintes : untabdoit être enfant d'untablist, unoptiondoit se trouver dans unlistbox. - Les états décrivent la situation actuelle :
aria-expanded="false"pour un panneau replié,aria-checked="true"pour une case cochée. Ils changent au fil des interactions. - Les propriétés apportent des informations complémentaires :
aria-labelnomme un élément sans texte visible,aria-describedbyy associe une explication,aria-requiredsignale un champ obligatoire.
En combinant ces trois types, le développeur restitue un composant complet aux technologies d'assistance :
<button aria-expanded="false" aria-controls="panel-1">
Détails du produit
</button>
<div id="panel-1" role="region" hidden>
Contenu masqué par défaut.
</div>Le lecteur d'écran annonce : « Détails du produit, bouton, réduit ». L'utilisateur sait qu'il peut déplier la section. Sans aria-expanded, il n'a aucune indication sur l'état du panneau.
#ARIA ne remplace pas le comportement
C'est le piège le plus courant. Ajouter role="button" à un <div> modifie l'annonce vocale, mais ne gère ni le focus clavier, ni la touche Entrée, ni la touche Espace. Le composant ment.
<!-- ❌ Annoncé "bouton", inutilisable au clavier -->
<div role="button" onclick="save()">Enregistrer</div>
<!-- ✅ Focusable, activable, sémantique natif -->
<button onclick="save()">Enregistrer</button>La spécification ARIA in HTML formalise ce principe : si un élément HTML natif avec la sémantique voulue existe, utilisez-le. « No ARIA is better than bad ARIA » résume toute la philosophie.
Quand le HTML natif ne suffit pas, ARIA prend le relais. Onglets, menus déroulants, sliders, zones de notification dynamiques : le W3C APG documente chaque motif de conception avec sa structure, sa gestion clavier et ses attributs requis.
#En résumé
WAI-ARIA donne une voix aux composants que le HTML ne sait pas décrire. Chaque attribut ARIA est un engagement : le développeur doit fournir le comportement correspondant. Le RGAA vérifie cette cohérence dans sa thématique 7 (Scripts). Commencez par le HTML sémantique. ARIA vient après.