Parlons accessibilité
A11Y, WCAG, AA, AAA, autant de termes pour parler de notre sujet principal : L’accessibilité du web. Comment rendre un site accessible, quels sont les outils et pourquoi c’est un enjeu très important.
De quoi parle-t-on ?
De manière globale, l’accessibilité est le fait de rendre accessible un bien ou un service à l’ensemble de la population, notamment aux personnes en situation de handicap, qu’il soit physique ou mental. Dans notre cas, l’accessibilité va surtout porter sur le fait que notre site sera utilisable par n’importe qui, peu importe le contexte :
- Déficience : visuelle, motrice, auditive, cognitive…
- Technologique : navigateur à jour, dernier téléphone, écran large…
- Environnemental : extérieur bruyant, en plein soleil…
Aujourd’hui, 120 millions d’européens sont porteurs de handicap pour 70% de sites web NON-accessibles.
L’objectif principal de réaliser un site accessible est l’enjeu humain avant tout. Les bénéfices SEO et performance ne sont que secondaires.
Dans la plupart des recherches qu’on effectue en anglais, on tombe souvent sur l’acronyme a11y. C’est tout simplement parce qu’il y a 11 lettres entre le a et le y de “accessibility”. Ça vaut aussi pour le i18n de “internationalization”.
Comment rendre un site accessible ?
Pas de magie là dedans, ni de case à cocher en back-office. La démarche est avant tout humaine, et ce, dès la genèse du site, avant même de sortir la moindre petite ligne de code, avant même le premier croquis, dès sa conception. Tous les postes sont donc concernés (clients compris).
Pour la suite des tests, nous allons nous pencher sur le cas d’un site que l’agence a conçu et développé : Covireivac. Pourquoi lui ? Parce qu’il s’agit d’un site grand public à forte fréquentation, mais aussi parce qu’on l’a déjà audité et qu’il a une super note ! 😁 On en parle aussi ici.
Audit automatique
Sur un site existant, il existe de nombreux outils gratuits mis à disposition pour lancer un audit, nous allons principalement nous intéresser aux outils mis à disposition par le navigateur Chrome.
On peut également trouver l’extension Axe qui est une référence en la matière : https://www.deque.com/axe/
Lighthouse
Cet outil est disponible directement dans les DevTools (touche F12 pour l’ouvrir)
Ensuite, on a plusieurs options avant de lancer un audit, il est souhaitable de les sélectionner en fonction de son besoin.
Il est important de lancer l’audit (surtout en cas de test des performances) au moins deux fois d’affilée : Sur le 2e, le cache sera pris en compte et pourra grandement impacter la note finale en cas de test de performances.
De plus, il est nécessaire de tester les pages les plus fréquentées du site et pas uniquement la home qui est généralement bien plus complexe et lourde à charger. Ce n’est pas non plus la seule page visitée de votre site ! (je vous laisse consulter les statistiques de visites).
Audit manuel
Accessibility
Également dans le DevTools, dans l’onglet “Elements” on retrouve dans la sidebar, un autre onglet “Accessibility” qui va nous permettre d’avoir l’arborescence du site tel qu’il serait vu par un lecteur d’écran.
Expertise
Au delà des outils, il est également nécessaire d’avoir une très bonne connaissance du code html mis en place afin de se poser les bonnes questions (heureusement, on est là pour ça) :
- Est-ce que toutes mes images ont un attribut alt, s’il s’agit de contenu administrable, est-ce bien prévu ? Est-ce que le client est conscient / formé sur ce sujet ? (Si mes images ont une valeur décorative, il n’est pas recommandé d’ajouter un tel attribut).
- Est-ce que mes boutons d’action sont suffisamment explicites ? Peut-être nécessitent-ils une indication supplémentaire pour des personnes mal voyantes ?
- Est-ce que tous mes contenus ont des contrastes valides ? (A – AA – AAA) Est-ce que le client / les webdesigners sont formés à ce sujet ?
- Lorsque j’ai un pictogramme, est-ce qu’il est décrit par un quelconque moyen quand c’est nécessaire ? Texte en dessous ? Attribut aria-title ?
- Est-ce que mes liens, s’ils sont sur plusieurs éléments disposent d’un attribut title ?
- Est-ce que mon site dispose de liens d’évitement ?
- Si j’ai un slider avec plusieurs liens à l’intérieur, est-ce que la navigation au clavier est ok ?
- La navigation au clavier est-elle convenable ? Est-ce que j’ai bien des labels pour chaque champ ?
- Est-ce que mon information est visuelle uniquement par une couleur ? Attention aux personnes daltoniennes qui ne verront peut-être pas la différence.
Cette liste est non exhaustive mais permet déjà de soulever la plupart des problèmes qu’on pourrait rencontrer.
Pour l’anecdote, Julien notre responsable technique, avait une interface pour contrôler l’état des serveurs, hors celui-ci n’était visible que par une puce verte ou rouge… Pas de chance il est daltonien, donc pour lui tout était… vaguement vert… Pas pratique quand on est chargé de veiller à leur bon fonctionnement…
Et techniquement alors ?
ARIA
On parlait un peu plus haut des aria-attributes, ces attributs qui vont permettre aux lecteurs d’écrans d’ajouter des descriptions, des informations ou de se masquer. En voici quelques-uns :
aria-label
: permet de titre un objet (équivalent à title, ne pas l’ajouter si la balise en a déjà un)aria-labelledby
: indique les ID des éléments qui titrent l’objetaria-describedby
: indique les ID des éléments qui décrivent l’objetaria-required
: obligatoire, utile pour tous les éléments de formulaires requis.aria-hidden
: masqué, pour indiquer au lecteur d’écran que la popin d’information n’est pas affichée.aria-expanded
: déplié/replié, l’utilisation la plus courante est dans un système d’accordéons.
Formulaires
Chaque élément de formulaire dispose maintenant de son propre type, bien penser à les utiliser, surtout lorsqu’on navigue sur téléphone où le clavier va s’adapter, mais encore et toujours aussi pour nos lecteurs d’écrans qui vont bien mieux interpréter chaque champs :
- text
- phone
- number
- time
- date
- url
Bien penser à ajouter un id sur chaque champs avec un attribut for
sur le label pour faire la liaison entre les 2 éléments.
Alt
Pour chaque image à but non décoratif, il est important de la décrire via son attribut html alt . Cet attribut va permettre d’une part d’afficher la description de l’image lorsque celle-ci n’est pas chargée pour une raison ou une autre (très important pour des campagnes d’emailings par exemple où Outlook ne charge pas immédiatement les images).
Et d’une autre part, va permettre aux lecteurs d’écrans de décrire l’image affichée. Il est donc primordial de contextualiser la description (une image peut vouloir dire plusieurs choses différentes selon le contexte de l’article).
Snippets
Il existe une media query pour cibler si l’utilisateur a choisi d’afficher les animations ou non dans les options de son navigateur, il est donc important de le prendre en compte :
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
On peut aussi rendre l’état focus disponible uniquement lorsqu’on navigue au clavier :
*:focus {
&:not(:focus-visible) {
outline: none;
}
}
Pour conclure, on parle beaucoup d’accessibilité en ce moment, mais il ne faut pas voir ça comme une tendance, mais bien un élément primordial et impératif à la bonne conception d’un site web.
Ces optimisations vont cependant demander une vigilance particulière pour les développeurs et l’ensemble de la chaîne de production, ce qui va forcément impacter les temps passés et donc les coûts.
Pour aller plus loin
- Site officiel du gouvernement Français :
https://numerique.gouv.fr/publications/rgaa-accessibilite/ - Nos amis Belges :
https://accessibility.belgium.be/fr - Doc officielle du w3c (bon courage) :
https://w3c.github.io/using-aria/ - Pleins d’outils super bien :
https://tiny-helpers.dev/accessibility/ - Site très intéressant à propos des x (bullshit) plugins mis à disposition (en) :
https://shouldiuseanaccessibilityoverlay.com/ - Comment bien rédiger du contenu pour les attributs alt (en) :
https://youtu.be/flf2vS0IoRs
Remerciements
Merci à l’équipe de AccessibilityCon pour cette super journée de workshop avec Emmanuel Demey et les conférences des nombreux intervenants, c’était très enrichissant !