link
Marque un élément comme hyperlien — un contrôle qui navigue vers une nouvelle ressource lorsqu'il est activé. Utilisez d'abord l'élément HTML natif <a href> ; n'utilisez role="link" sur un <span> ou un <div> que lorsqu'il est impossible d'utiliser l'élément natif.
Quand l’utiliser
Presque jamais — utilisez <a href="...">. L’ancre native vous donne le focus, l’activation au clavier via Entrée, l’état « visité », le clic droit « ouvrir dans un nouvel onglet », le glisser-déposer vers les favoris et une vraie URL que l’utilisateur peut partager. role="link" sur un <div> abandonne tout cela.
Les seuls cas légitimes :
- Un système de conception tiers livre un composant « lien » non basé sur une ancre que vous ne pouvez pas remplacer.
- Vous corrigez un
<div onclick>inaccessible en attendant qu’un refactoring soit mis en place.
Si vous utilisez role="link", vous devez également :
- Rendre l’élément accessible au clavier avec
tabindex="0". - Gérer
keydownpourEnter(les liens ne s’activent PAS avec Espace — c’est un comportement de bouton). - Fournir un moyen réel pour que l’utilisateur voie l’URL de destination au survol ou au focus, puisqu’il n’y a pas d’attribut
href.
Erreurs fréquentes
<a>sanshref. Sanshref, l’élément n’est pas dans l’ordre de tabulation et les lecteurs d’écran ne l’annoncent pas comme un lien.<a href="#" onclick="...">utilisé comme bouton. Utilisez plutôt<button>— les liens naviguent, les boutons agissent.role="link"s’activant avec Espace. Espace fait défiler la page ; les liens s’activent uniquement avec Entrée.- Texte de lien du type « cliquer ici » ou « lire la suite ». Les utilisateurs de lecteurs d’écran qui consultent une liste de liens ne voient que le texte du lien — rendez-le descriptif.
- Absence d’
aria-current="page"sur le lien représentant la page actuelle dans une navigation.
Exemple
<!-- Recommandé -->
<a href="/toolkit/standards/wcag/">Référence WCAG 2.2</a>
<!-- Seulement quand <a href> est impossible -->
<span
role="link"
tabindex="0"
onclick="location.href='/toolkit/'"
onkeydown="if (event.key === 'Enter') location.href='/toolkit/'"
>
Toolkit
</span>