Guide de Référence ARIA
Référence complète : Tous les rôles, propriétés et états ARIA avec exemples pratiques et cas d'usage. Votre aide-mémoire pour développer accessible.
🔍 Recherche et Filtres
🎭 Rôles ARIA
🗺️ Rôles de Repères (Landmark)
banner
Usage : En-tête principal de la page ou section
✅ Recommandé
<header role="banner">
<h1>Titre du site</h1>
</header>
🎯 Encore mieux
<header>
<h1>Titre du site</h1>
</header>
L'élément <header> a déjà le rôle banner implicite
main
Usage : Contenu principal de la page (unique par page)
✅ Recommandé
<main role="main">
<h1>Contenu principal</h1>
</main>
🎯 Encore mieux
<main>
<h1>Contenu principal</h1>
</main>
navigation
Usage : Zone de navigation (menu, liens)
✅ Avec label
<nav role="navigation" aria-label="Menu principal">
<ul><li><a href="/">Accueil</a></li></ul>
</nav>
contentinfo
Usage : Pied de page avec informations sur le document
🎯 Recommandé
<footer>
<p>© 2025 Mon Site</p>
</footer>
complementary
Usage : Contenu complémentaire (sidebar, widgets)
🎯 Recommandé
<aside>
<h2>Articles liés</h2>
</aside>
🎛️ Rôles de Widgets
button
Usage : Élément cliquable qui déclenche une action
❌ À éviter
<div role="button" onclick="save()" tabindex="0">Sauvegarder</div>
🎯 Recommandé
<button onclick="save()">Sauvegarder</button>
tab
Usage : Onglet dans un système de navigation par onglets
✅ Exemple complet
<div role="tablist">
<button role="tab" aria-selected="true" aria-controls="panel1">Onglet 1</button>
<button role="tab" aria-selected="false" aria-controls="panel2">Onglet 2</button>
</div>
<div role="tabpanel" id="panel1">Contenu 1</div>
slider
Usage : Contrôle de sélection de valeur dans une plage
✅ Avec propriétés
<div role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="50" aria-label="Volume"></div>
📢 Régions Dynamiques
alert
Usage : Message important qui nécessite l'attention immédiate
✅ Message d'erreur
<div role="alert">
Erreur : Veuillez remplir tous les champs obligatoires
</div>
status
Usage : Information de statut non critique
✅ Sauvegarde automatique
<div role="status" aria-live="polite">
Document sauvegardé automatiquement
</div>
🏷️ Propriétés ARIA
🔗 Propriétés de Relation
aria-labelledby
Usage : Référence l'ID d'un élément qui sert de label
✅ Groupe de champs
<h2 id="billing">Adresse de facturation</h2>
<fieldset aria-labelledby="billing">
<input type="text" placeholder="Rue">
</fieldset>
aria-describedby
Usage : Référence l'ID d'un élément qui décrit l'élément courant
✅ Aide contextuelle
<input type="password" aria-describedby="pwd-help">
<div id="pwd-help">Minimum 8 caractères avec majuscules et chiffres</div>
aria-controls
Usage : Indique quel élément est contrôlé par l'élément courant
✅ Bouton d'accordéon
<button aria-controls="section1" aria-expanded="false">Voir détails</button>
<div id="section1" hidden>Contenu détaillé</div>
📝 Propriétés de Contenu
aria-label
Usage : Fournit un nom accessible quand le texte visible n'est pas suffisant
✅ Bouton avec icône
<button aria-label="Fermer la fenêtre">
<span aria-hidden="true">×</span>
</button>
aria-valuemin / aria-valuemax / aria-valuenow
Usage : Définit les valeurs min, max et actuelle pour les contrôles de plage
✅ Barre de progression
<div role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="75" aria-label="Progression du téléchargement">
75%
</div>
🔄 États ARIA
👁️ États de Visibilité
aria-hidden
Usage : Cache un élément des technologies d'assistance
✅ Icône décorative
<span aria-hidden="true">🎉</span> Félicitations !
❌ À éviter
<button aria-hidden="true">Cliquez ici</button>
Ne jamais cacher un élément interactif
aria-expanded
Usage : Indique si un élément pliable est déplié ou non
✅ Menu déroulant
<button aria-expanded="false" aria-controls="submenu">Menu</button>
<ul id="submenu" hidden>
<li><a href="/page1">Page 1</a></li>
</ul>
✅ États de Sélection
aria-selected
Usage : Indique qu'un élément est sélectionné dans une liste
✅ Liste d'options
<ul role="listbox">
<li role="option" aria-selected="true">Option 1</li>
<li role="option" aria-selected="false">Option 2</li>
</ul>
aria-checked
Usage : État coché/non coché pour les cases à cocher personnalisées
✅ Case à cocher custom
<div role="checkbox" aria-checked="false" tabindex="0">
Accepter les conditions
</div>
🚨 États de Validation
aria-invalid
Usage : Indique qu'un champ contient une erreur de validation
✅ Champ en erreur
<input type="email" aria-invalid="true" aria-describedby="email-error">
<div id="email-error" role="alert">Format d'email invalide</div>
aria-required
Usage : Indique qu'un champ est obligatoire
✅ Champ obligatoire
<input type="text" aria-required="true" aria-label="Nom (obligatoire)">
🎯 Encore mieux
<input type="text" required aria-label="Nom">
L'attribut HTML required est préférable
📡 Régions Dynamiques (Live Regions)
🔊 Propriétés de Notification
aria-live
Usage : Indique qu'une zone sera mise à jour dynamiquement
✅ Valeurs possibles
aria-live="off"
aria-live="polite"
aria-live="assertive"
✅ Exemple pratique
<div aria-live="polite" id="status"></div>
// JavaScript
document.getElementById('status').textContent = 'Sauvegarde terminée';
aria-atomic
Usage : Indique si tout le contenu de la région doit être annoncé
✅ Annonce complète
<div aria-live="polite" aria-atomic="true">
<span>Étape 2</span> sur <span>5</span>
</div>
Annoncera "Étape 2 sur 5" même si seul le premier span change
⚡ Aide-Mémoire Rapide
🏷️ Labels et Descriptions
| Attribut | Usage | Exemple |
|---|---|---|
aria-label |
Nom accessible direct | aria-label="Fermer" |
aria-labelledby |
Référence à un label | aria-labelledby="title" |
aria-describedby |
Description complémentaire | aria-describedby="help" |
🔄 États Courants
| État | Valeurs | Usage |
|---|---|---|
aria-expanded |
true/false | Menus, accordéons |
aria-selected |
true/false | Listes, onglets |
aria-checked |
true/false/mixed | Cases à cocher |
aria-invalid |
true/false | Validation formulaires |
📢 Live Regions
| Type | Priorité | Usage |
|---|---|---|
aria-live="polite" |
Basse | Statuts, confirmations |
aria-live="assertive" |
Haute | Erreurs, alertes |
role="alert" |
Haute | Messages critiques |
role="status" |
Basse | Informations de statut |