aria-label
Fournit un nom accessible sous forme de chaîne de caractères lorsqu'aucun texte visible n'est disponible. À utiliser uniquement en l'absence de libellé à l'écran — si un texte visible existe, préférez aria-labelledby afin que le nom prononcé corresponde à ce que l'utilisateur voit.
Quand l’utiliser
Lorsqu’un contrôle n’a pas de texte visible — boutons avec icône uniquement, champs de recherche avec seulement un glyphe de loupe, boutons de fermeture (×), icônes de liens vers des réseaux sociaux. La chaîne placée dans aria-label devient le nom accessible de l’élément, et les lecteurs d’écran l’annoncent à la place de tout texte interne.
L’équivalent HTML natif est l’élément <label> pour les champs de formulaire, ou le texte visible d’un bouton. N’utilisez aria-label que lorsque aucune de ces options n’est possible.
Comportement
Prend une chaîne de caractères unique. Tout ce que vous placez dans aria-label remplace tout texte visible à l’intérieur de l’élément — le nom accessible est ce que les utilisateurs de technologie d’assistance entendent, mais il est invisible pour les utilisateurs voyants. Cette asymétrie est la source de la plupart des problèmes liés à cet attribut.
La chaîne n’est pas traduite automatiquement. Si votre site prend en charge plusieurs langues, la valeur de aria-label doit être localisée comme toute autre chaîne d’interface. Les lecteurs d’écran traitent également la valeur comme du texte brut — pas de HTML, pas de sauts de ligne, pas de balisage.
Si l’élément possède un texte visible, préférez aria-labelledby pointant vers ce texte, afin que le libellé visible et le nom accessible restent synchronisés.
Erreurs fréquentes
- Mettre
aria-label="Cliquer ici"sur un bouton qui indique déjà « Valider la commande » — le texte visible est désormais masqué pour la technologie d’assistance, et l’utilisateur entend quelque chose d’incorrect. - Violer le critère de succès WCAG 2.5.3 Étiquette dans le nom :
aria-label="Valider"sur un bouton dont le texte visible indique « Envoyer la commande » signifie qu’un utilisateur de commande vocale ne peut pas dire « cliquer sur Envoyer la commande » pour l’activer. - Ajouter
aria-labelà un élément non interactif comme un<div>ou un<span>— la plupart des navigateurs l’ignorent car l’élément n’a pas de rôle qui prend en charge un nom. - Laisser la valeur non traduite alors que le reste de la page est dans une autre langue.
- Utiliser
aria-labelà la place d’un vrai<label>sur un champ de formulaire, ce qui supprime la possibilité de cliquer sur le libellé pour placer le focus dans le champ. - Insérer des instructions dans
aria-labelau lieu dearia-describedby. Le nom doit être court ; le texte d’aide va dans la description.
Exemple
<!-- Bouton avec icône uniquement : pas de texte visible, aria-label est obligatoire -->
<button type="button" aria-label="Fermer la boîte de dialogue">
<svg aria-hidden="true" focusable="false">…</svg>
</button>
<!-- Texte visible + icône : N'utilisez PAS aria-label ici -->
<button type="button">
<svg aria-hidden="true" focusable="false">…</svg>
Fermer la boîte de dialogue
</button>