Apprends à rendre tes pages web utilisables par tous, y compris les personnes qui dépendent de lecteurs d'écran, de la navigation au clavier et d'autres technologies d'assistance.
L'accessibilité web (souvent abrégée a11y — le "11" représente les 11 lettres entre le "a" et le "y") signifie concevoir des sites web pour que tout le monde puisse les utiliser, quelles que soient leurs capacités ou circonstances.
Cela inclut les personnes qui sont :
L'accessibilité n'est pas optionnelle. Dans de nombreuses régions, c'est une exigence légale (par exemple, l'ADA aux États-Unis, l'EAA dans l'UE). Plus important encore, c'est la bonne chose à faire. Un site accessible tend également à être mieux structuré, plus convivial pour le SEO et plus facile à maintenir.
ARIA (Accessible Rich Internet Applications) est un ensemble d'attributs que tu peux ajouter aux éléments HTML pour transmettre du sens aux technologies d'assistance.
role — Remplace ou complète le rôle natif de l'élément. Exemple : <div role="navigation"> indique aux lecteurs d'écran que cette div fonctionne comme un repère de navigation. Privilégie le HTML sémantique (<nav>) quand c'est possible ; utilise role uniquement quand tu ne peux pas faire autrement.aria-label — Fournit un nom accessible lorsque le texte visible est absent. Exemple : <button aria-label="Fermer la boîte de dialogue">X</button>.aria-describedby — Pointe vers l'id d'un autre élément qui donne une description plus longue. Idéal pour le texte d'aide des formulaires.aria-hidden="true" — Masque un élément de l'arbre d'accessibilité tout en le gardant visuellement présent. Utile pour les icônes décoratives.aria-live — Annonce les changements de contenu dynamique. Valeurs : polite (attend une pause) ou assertive (interrompt immédiatement).Première règle d'ARIA : N'utilise pas ARIA si un élément HTML natif communique déjà la même chose. <nav> est toujours meilleur que <div role="navigation">.
<!-- Skip-to-content link: hidden until focused via keyboard -->
<a href="#main-content" class="skip-link">Skip to main content</a>
<nav aria-label="Primary navigation">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main id="main-content">
<h1>Contact Us</h1>
<form>
<label for="email">Email address</label>
<input
type="email"
id="email"
name="email"
aria-describedby="email-help"
required
>
<small id="email-help">
We will never share your email with anyone else.
</small>
<button type="submit">Send</button>
</form>
</main>De nombreux utilisateurs naviguent entièrement au clavier en utilisant Tab pour se déplacer entre les éléments focalisables et Entrée ou Espace pour les activer.
<div> cliquable, les utilisateurs au clavier ne peuvent pas l'atteindre à moins que tu n'ajoutes tabindex="0" et que tu gères les événements clavier — ce qui est fragile. Utilise simplement un <button>.outline: none) sans fournir une alternative tout aussi visible.tabindex supérieures à 0 — elles créent des séquences de tabulation confuses.<img> a besoin d'un attribut alt. Si l'image est décorative, utilise alt="" (vide) pour que les lecteurs d'écran la sautent. Si l'image transmet une information, décris sa signification, pas son apparence.Quand dois-tu utiliser `aria-hidden="true"` sur un élément ?