Parmi ces techniques, certaines m’étaient inconnues : une ignorance qui ne nuisait pas directement à l’accessibilité mais bel et bien au confort d’utilisation du site pour les personnes concernées. Voici donc deux techniques que j’ai mises en place suite à cette lecture passionnante.
Les liens similaires
Il devient rapidement ennuyeux de parcourir une liste de liens (avec un lecteur d’écrans et/ou en tabulant) lorsque plusieurs liens consécutifs ont la même destination. Malheureusement, c’est le cas très souvent sur WordPress dans les boucles d’articles.
Et bien voici une bonne nouvelle : il est très simple de corriger ça, de façon totalement transparente pour tout le monde :
- tabindex à -1 : pour la navigation au clavier, cet attribut permet de retirer un lien tabulable de l’index de tabulation. En l’appliquant judicieusement dans votre liste d’articles, vous ne laissez ainsi qu’un seul lien – et arrêtez de polluer la navigation au clavier.
- aria-hidden à true : cet attribut permet de taire un élément dans les lecteurs d’écrans. La logique est la même que précédemment, à ceci près qu’on prendra soin de laisser le lien dont la vocalisation sera la plus pertinente : dans le cas d’une boucle WordPress, le lien présent dans les titres est idéal.
En appliquant cette technique correctement, on divise par deux ou trois le nombre de liens à parcourir dans une liste d’articles. Vos utilisateurs vous remercieront 🙂 .
Les liens d’évitement
Je ne reviendrais pas sur les bases de cette technique, qui est plus que documentée sur le web.[1]
- La persistance des liens d’évitement après leur première prise de focus
- La mise en avant visuelle de la zone ciblée par le lien d’évitement
Concernant le second point, je ne l’ai pas encore implémenté sur ffoodd.fr pour la seule raison que je dois trouver un signifiant visuel cohérent avec mon design, mais ça ne saurait tarder 🙂 .
Cependant la persistance des liens m’a particulièrement intéressé, car c’est un point que je trouve réellement bénéfique pour le confort d’utilisation. Même si je ne me sers de la tabulation que pour tester mes intégrations, il m’a toujours semblé désagréable de « perdre » ces liens.
La persistance des liens d’évitement
En recherchant plus d’informations sur cette technique, je suis tombé sur le blog de la société Atalan pour laquelle travaille Johan – et sur un article dédié au sujet. Des ressources très intéressantes sont données, cependant toutes sont basées sur jQuery pour ajouter une classe aux liens après leur première prise de focus. Dommage, je n’utilise pas jQuery sur ffoodd.fr.
Voici donc le bout de code correspondant, en vanilla javascript :
/* Lien d’évitement > Persistance de l’affichage
* @see : https://blog.atalan.fr/des-liens-devitement-astucieux/
*/
[].forEach.call(document.querySelectorAll(".skip"), function(el) {
el.addEventListener("focus", function() {
el.classList.add("show");
});
});
Et voilà ! Pour faire simple, je cible les liens disposant de la classe « skip » pour leur ajouter la classe « show » au focus. Et le CSS fait le reste.
À noter que « dans certains cas rares » Chrome et IE ne transportent pas le focus sur la cible du lien d’évitement lorsqu’il a été activé. Un petit script vient facilement s’assurer que le focus est bien transporté :
/* Correction du bug des ancres sous Chrome
* @see : https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
* @see : https://blog.atalan.fr/des-liens-devitement-astucieux/
*/
window.addEventListener("hashchange", function(event) {
var element = document.getElementById(location.hash.substring(1));
if (element) {
if (!/^(?:a|select|input|button)$/i.test(element.tagName)) {
element.tabIndex = -1;
}
element.focus();
}
}, false);
La qualité de l’expérience
Ce sont certes des détails, mais ces détails améliorent le confort de navigation et rendent un site agréable : l’internaute appréciera cette expérience, et reviendra (pour peu que vos contenus soient à la hauteur).
Un article de Jean-Pierre Villain sur Alsacréations - il date de 2006 et est toujours (presque) d’actualités : https://www.alsacreations.com/tuto/lire/572-Les-liens-d-evitement.htm ↩︎
Très bon article !
Petite question : dans le cas d’une image présente dans un lien en html. Le aria-hidden est à appliquer sur le lien, sur l’image ou sur les deux ?
Tu vas rire, mais « ça dépend » : en supposant qu’on parle du contexte dans lequel la destination de ce lien est similaire à celle d’un autre lien à proximité, c’est sur le lien que tu vas devoir mettre aria-hidden (et par héritage il s’appliquera aux contenus du lien). L’idée est que ce sont uniquement les liens similaires que l’on dérobe aux technologies d’assistance, afin de faciliter la navigation.
Attention toutefois, cette logique s’applique différemment dans d’autres contextes : s’il ne s’agit pas d’un lien similaire, une image dans un lien devrait avoir du sens ou disposer d’une alternative textuelle. Si l’image est dispensable, elle peut être ajoutée en CSS (via background) ou encore disposer du rôle « presentation » afin de préciser qu’elle n’a pas d’importance sémantique (et par conséquent, elle a une alternative viable et pertinenente au sein du lien !)…
Je t’invite à lire le livre d’Armony Altinier dont j’ai fait un compte-rendu récemment, car la thématique des images y est très claire. Tu disposes de deux types d’images : celles qui sont porteuses de sens, et doivent donc être rendues à tous les utilisateurs d’une manière ou d’une autre (l’alternative textuelle sera vocalisée par un lecteur d’écran par exemple); et celles qui sont décoratives, et ne doivent donc pas porter de sens (alternative vide ou rendue visuellement en CSS).
Est-ce que ça répond à ta question 😀 ?
Effectivement ça répond à ma question !
Mon cas de figure est un logo permettant un retour à l’accueil. C’est donc un lien similaire au premier lien de mon menu. C’est vrai qu’à l’époque je ne me suis pas posé la question de savoir s’il est indispensable ou non à la compréhension générale.
J’ai reçu ce livre le week-end dernier et je compte m’y attaquer dès que possible 😉
Merci de ta réponse 🙂