Comment débuter dans l'accessibilité numérique ?
Emmanuelle ABOAF
BDX IO – 2 décembre 2022
Qu'est ce qu'est
l'inaccessibilité numérique ?
- Impossibilité de zoomer : grossir ou réduire le texte sans modifier la structure du site.
- Je ne peux pas naviguer sur le site.
- Les vidéos ne sont pas sous-titrées ni audio-décrites.
- La police est trop petite.
- Les couleurs sont trop vives ou trop clairs.
- Impossibilité de remplir ou/et de valider un formulaire.
- Les images ne sont pas décrits.
- Mon lecteur d’écran me parle en anglais alors que le site est en français.
- Je ne peux pas payer en ligne.
- Il y a pleins de boutons ou de liens identiques non titrés, je ne sais pas où cliquer.
Quand les utilisateurs ou utilisatrices ont des problèmes d'accessibilité...
Vouloir commander sur la Billeterie #Fnac et ne pas pouvoir finaliser parce qu'on ne sait pas quel type de CB on a choisi! #a11y #raslebol
— @fpintodasilva 5 octobre 2015
Inscription @ParisWeb presque terminée! Au moment de payer, le choix du paiement impossible: bouton, bouton, bouton! Une solution? :(
— @sylduch 13 juin 2016
En tous cas question accessibilité il faudra repasser: site vocaliser en anglais #A11Yfail!
— @sylduch 2 septembre 2016
Pour commander sur les sites de restaus, encore faut-il qu'ils soient utilisable avec une synthèse vocale. Ce doit être le cas de moins de 2% d'entre eux.
— @CelineBoeuf 29 août 2021
Comment les équipes, qui réalisent les newsletters, peuvent eux-mêmes lire si nous-mêmes nous ne pouvons pas lire ? Je veux bien croire que c’est « joli » pour eux mais si on veut que le message passe, il faut qu’il soit lisible.
— @eaboaf_ 19 mai 2021
La synthèse prononce donc à chaque fois : "adresse du lien" puis c'est comme une pochette surprise qui s'ouvre, puisqu'on ne sait pas sur quel site on va tomber. Une notion très personnelle de l'#Accessibilité donc... 2/2
— @CelineBoeuf 24 mai 2021
Et nous poursuivons avec : Veuillez corriger les erreurs de saisie des champs encadrés en rouge. On saura me coller des pénalités si je me trompe mais on ne me donne pas les moyens de ne pas me tromper. Sinon, mettre des astérisques, c'était aussi envisageable. #JDCJDR
— @CelineBoeuf 24 mai 2021
Ce soir dans ma boîte mail, j’ai trouvé… Un mail de la Poste m’indiquant qu’ils allaient livrer mon colissimo contre signature demain ou après demain, sachant que je serai au boulot et que leur système pour reprogrammer une livraison n’est pas #Accessible. 1/n
— @CelineBoeuf 17 octobre 2022
Le site de la DGFIP, comment dire, ou plutôt redire… ? #Accessibilité, tout ça tout ça. Donc moi, demi-citoyenne #Aveugle, je n’ai pas droit de déposer une réclamation auprès des impôts parce que leur site Web ne me le permet pas. 5/n
— @CelineBoeuf 17 octobre 2022
Donc l'accessibilité numérique, c'est quoi ?
C'est la capacité pour toute personne de lire, de comprendre et d'utiliser correctement, pleinement et sans blocage les sites digitaux.
Pour qui ?
-
Déficientes visuelles
- Les personnes aveugles et malvoyantes utilisent un lecteur d’écran pour naviguer sur internet ou une loupe agrandissante pour lire le contenu du site.
-
Déficientes auditives
- Les personnes sourdes et malentendantes ne peuvent pas comprendre ce qui est dit sur les vidéos ou podcasts d’où la nécessité de sous-titrer les vidéos ou de transcrire les podcasts.
-
Déficientes motrices (Ex : IMC, tétraplégie,
Parkinson)
- Par exemple, les personnes ayant des tremblements ou ayant une paralysie des bras ou mains ne peuvent pas utiliser la souris.
-
Déficientes cognitives (Ex : dyslexie,
photosensibilité)
- Par exemple, un site comportant des textes jaunes sur un fond d'orange est complètement illisible pour les personnes ayant la photosensibilité. Il faut donc assurer les contrastes suffisantes et une police sans empattement (sans-serif) pour la personne.
- Et n'oublions pas les personnes âgées !
L'accessibilité, l'affaire de tous et de toutes
« On cherche à faciliter la vie aux utilisateurs et utilisatrices ayant une déficience invalidante — dyslexie, daltonisme, surdité, mauvaise vue, etc. —, on en vient à faciliter la vie de tous les personnes. »
Quelles sont
vos armes ?
- Un clavier ;
- Un lecteur d'écran ;
- Et c'est tout.
Les lecteurs d'écran existants sont :
- JAWS (Windows)
- NVDA (Windows)
- Orca (Linux)
- VoiceOver (IOS)
- TallBack (Android)
Bilan de la première étude sur l’usage des lecteurs d’écran en 2015
Démo avec un site non accessible
Comment penser accessible avec les composants simples et régulièrement utilisés en HTML ?
Il y a un formulaire ?
Rendez-le accessible de manière simple.
Formulaire non accessible
Ce que nous codons
<form role="form">
<fieldset>
<legend>Connexion</legend>
<div>
<label>Identifiant</label>
<input type="text" id="txtIdentifiant" />
</div>
<div>
<label>Mot de passe</label>
<input type="password" id="txtMotDePasse" />
</div>
<div>
<input type="checkbox" id="chkSeSouvenirDeMoi" />
<label>Se souvenir de moi ?</label>
</div>
<div>
<button type="submit" id="btnEnvoyer">Connexion</button>
</div>
</fieldset>
</form>
Ce que nous voyons
Ce que le lecteur d'écran lit
Formulaire accessible
Ce que nous codons
<form role="form">
<fieldset>
<legend>Connexion</legend>
<div>
<label for="txtIdentifiant">Identifiant</label>
<input type="text" id="txtIdentifiant" />
</div>
<div>
<label for="txtMotDePasse">Mot de passe</label>
<input type="password" id="txtMotDePasse" />
</div>
<div>
<input type="checkbox" id="chkSeSouvenirDeMoi" />
<label for="chkSeSouvenirDeMoi">Se souvenir de moi ?</label>
</div>
<div>
<button type="submit" id="btnEnvoyer">Connexion</button>
</div>
</fieldset>
</form>
Ce que nous voyons
Ce que le lecteur d'écran lit
Comment renseigner les champs obligatoires accessibles ?
Il faut ajouter l'attribut
required
pour définir le champ
obligatoire. Ainsi le lecteur d'écran va mentionner que le
champ est obligatoire.
Voici ce que le lecteur d'écran renvoie :
Lorsqu'on valide le formulaire, il ne faut pas communiquer l'information valide ou erronnée par la couleur car les personnes daltoniennes ne pourront pas voir la différence sur la couleur.
Il y a des images ?
Pensez à les décrire.
Comment décrire les images ?
Ne pas mettre le nom du fichier de l'image.
<img src="visuel_academie_de_paris-14-11.png" alt="visuel_academie_de_paris-14-11.png" />
Voici ce que le lecteur d'écran restitue :
graphique visuel_academie_de_paris-14-11.png
En décrivant ce que comporte l'image, on donne une véritable information sur le contenu.
<img src="visuel_academie_de_paris-14-11.png" alt="Message venant de l'académie de Paris émise le samedi 14 novembre : Un point de situation sur l'ouverture des établissements scolaires et universitaires Lundi, en Île-de-France, sera communiqué ce Samedi en fin de journée." />
Voici ce que le lecteur d'écran restitue :
graphique Message venant de l'académie de Paris émise le
samedi 14 novembre : Un point de situation sur
l'ouverture des établissements scolaires et
universitaires Lundi, en Île-de-France, sera communiqué
ce Samedi en fin de journée.
L'attribut alt
est une information précieuse pour
les lecteurs d'écrans.
Mais attention, ne l'utilisez pas n'importe comment.
-
Si l'image est purement décorative, laissez l'attribut
alt
vide. -
Si l'image contient une information importante, décrivez-la
dans l'attribut
alt
.
Pour en savoir plus :
Vous naviguez le site avec votre clavier ?
Pensez à mettre en valeur les éléments et à vérifier qu'ils
ont le focus notamment avec la touche TAB
.
Comment mettre le focus sur les liens et les boutons ?
-
Ne supprimez pas le focus mis par défaut depuis
le CSS :
a { outline: none; }
. Autrement laissez-lea { outline: 0; }
-
Si vous le supprimez, proposez
un style alternatif (ci-contre l'image) en
mettant en valeur les liens et boutons de manière
visible en CSS avec
:focus
et:hover
-
Vérifiez que les menus et ses sous-menus, les champs,
les liens et les boutons soient
accessibles depuis la touche
TAB
du clavier. - Vérifiez que le lecteur d'écran restitue bien les informations des liens et des boutons.
Des liens non accessibles
Ce que nous codons
<a href="#">Lire la suite</a>
Ce que nous voyons
Ce que le lecteur d'écran lit
Lire la suite lien
Lire la suite lien
Lire la suite lien
Lire la suite lien
Comment l'utilisateur ou l'utilisatrice du lecteur d'écran peut savoir quel lien "Lire la suite" appartient à l'article qu'il veut lire ?
Eviter les phrases de type : "cliquez ici", "lire la
suite", "voir ce lien", "ici", "par là", etc.
Mettez une information pertinente et
explicite.
Des liens accessibles
Ce que nous codons
<a href="#" title="Lire la suite du passage de Lorem Ipsum standard (Nouvelle fenêtre)" target="_blank">Lire la suite</a>
<a href="#" title="Lire la suite d'un autre passage de Lorem Ipsum standard">Lire la suite</a>
Ce que nous voyons
Ce que le lecteur d'écran lit
Lire la suite lien Lire la suite du passage de Lorem Ipsum standarden latin (Nouvelle fenêtre)
Lire la suite lien Lire la suite d'un autre passage de Lorem Ipsum standard en latin
Lire la suite lien Lire la suite de l'article sur l'accessibilité
Lire la suite lien Lire la suite de l'article sur le RGAA
Si le lien ouvre une nouvelle fenêtre, il est important de le préciser.
Des boutons non accessibles
Ce que nous codons
<div>
<h1>Choisir votre moyen de paiement</h1>
<button>
<img src="visa.png" alt=""/>
</button>
<button>
<img src="mastercard.png" alt="" />
</button>
<button>
<img src="paypal.png" alt=""/>
</button>
</div>
Ce que nous voyons
Ce que le lecteur d'écran lit
Des boutons accessibles
Ce que nous codons
<div>
<h1>Choisir votre moyen de paiement</h1>
<button title="Payer avec VISA">
<img src="visa.png" alt=""/>
</button>
<button>
<img src="mastercard.png" alt="Payer avec MasterCard" />
</button>
<button>
<img src="paypal.png" alt="Payer avec Paypal"/>
</button>
</div>
Ce que nous voyons
Ce que le lecteur d'écran lit
Un peu de rappel...
- Un bouton n'est pas un lien.
- Un lien n'est pas un bouton.
- Si ça doit aller quelque part, mettez un lien.
- Si ça doit faire quelque chose, mettez un bouton.
Et stylez-les !
Article à lire : Links vs Buttons in Modern Web Applications (EN)
Utilisation du tabindex
@Mediapart Bonjour, je suis en train de m'abonner et il y a un gros problème sur votre formulaire de saisie des coordonnées pour le prélèvement bancaire : il n'est pas accessible au clavier. Il faut retirer les attributs tabindex="-1" des champs de formulaire SVP. #accessibilité
— @juliemoynat 17 janvier 2021
@Mediapart Avec ce problème, vous empêchez les personnes handicapées qui naviguent au clavier de s'abonner ; je ne pense pas que ce soit votre volonté. Merci beaucoup !
— @juliemoynat 17 janvier 2021
Attention de ne pas utiliser n'importe comment le
tabindex
Le tabindex
est très utile à la navigation du
clavier car il permet
de donner ou non le focus à un élément.
-
En mettant
tabindex="-1"
, vous enlevez l'élément du focus -
En mettant
tabindex="0"
, vous donnez l'élément au focus - N'attribuez pas d'ordre au tabindex sur chaque élément focusable car cela nuit à l'ordre naturel de la navigation au clavier
- Ne pas mettre le tabindex sur les zones comportant du texte (titre, paragraphe, etc.)
Comment rendre accessible la structure du site ?
Définir la langue de votre site
En tous cas question accessibilité il faudra repasser: site vocaliser en anglais #A11Yfail!
— @sylduch 2 septembre 2016
Précisez bien la langue utilisée de votre site sur
l'attribut lang
car sinon, le lecteur d'écran
vocalisera en anglais, langue utilisée par défaut.
<html
lang="fr"></html>
Si, sur votre page HTML, vous écrivez un mot ou phrase
dans une autre langue, précisez la nature de la langue
dans le
span
pour que le lecteur d'écran vocalise le
texte dans la bonne langue.
Le lecteur d'écran vocalise en français puisque j'écris du
texte en français.
<span
lang="en"/>
Then if I write in English, the screen reader must be able
to vocalize in English</span>
Respectez la hiérarchie des titres
- Pensez la hiérarchie des titres (h1 à h6) comme une table des matières.
- Pour faciliter la navigation des lecteurs d’écran, les headings doivent être dans le bon ordre : h1 > h2 > h3 > h4 > h5 > h6 et il ne doit pas y avoir de trou entre, par exemple, h1 et h3.
- Cela permet également aux utilisateurs et utilisatrices de lecteurs d'écran d'assimiler la hiérarchie de l'information.
- Et c'est bon pour le SEO !
N'utilisez pas le heading juste pour
grossir ou réduire la taille du texte. Si vous voulez
grossir ou réduire la taille, vous pouvez ajouter le heading
dans l'attribut class
ou le styler.
<h1
class="h3">Hello World</h1>
Respectez la structure du document
-
header
,nav
,main
etfooter
sont obligatoires. -
main
est unique etnav
réservé aux zones de navigation.
Attribuez les rôles à la structure du document
L'attribut role permet à l'utilisateur ou l'utilisatrice du lecteur d'écran de s'orienter vers les zones importantes d'une page web et à naviguer rapidement vers ces zones au sein d'un site web.
-
Sont uniques dans la page :
-
L'attribut
role="banner"
est placé dans le tagheader
-
L'attribut
role="main"
est placé dans le tagmain
-
L'attribut
role="content-info"
est placé dans le tagfooter
-
L'attribut
role="search"
est utilisé dans unediv
contenant la zone de recherche
L'attribut role="navigation"
est placé dans
le tag nav
et peut être utilisé plusieurs
fois.
Pour en savoir plus : Accessible Landmarks (EN)
Pensez au zoom texte
- Pouvoir agrandir le site jusqu'à 200% voire plus sans l'altérer.
-
Mettre les tailles en valeur relative :
rem, em ou %.
- La taille en valeur fixe en px, in, pt ou cm ne facilite pas l'agrandissement des textes.
Pour en savoir plus sur les valeurs relatives : Du responsive tout en em
Pensez aux contrastes
Le rapport de contraste entre le texte et son arrière-plan doit avoir :
- un ratio de 4:5:1 minimum
- un ratio de 3:1 minimum avec un zoom à partir de 120% ou 150% de la taille du texte
Un candidat pour le record du contraste le plus bas: un placeholder (et pas d'étiquette) à 1,65:1! #a11yfail pic.twitter.com/8ZG3dzCKh0
— @OlivierNourry 8 avril 2016
Comment les équipes, qui réalisent les newsletters, peuvent eux-mêmes lire si nous-mêmes nous ne pouvons pas lire ? Je veux bien croire que c’est « joli » pour eux mais si on veut que le message passe, il faut qu’il soit lisible.
— @eaboaf_ 19 mai 2021
ARIA (Accessible Rich Internet Application)
Définition
ARIA est une spécification qui propose la possibilité de définir, sur les composants simples et riches, une description des rôles, des états et des propriétés, de manière à ce qu’ils soient reconnaissables et utilisables par les utilisateurs et utilisatrices de technologies d’assistance.
Avec les balises ARIA, on permet de faciliter la navigation au clavier et la restitution des informations via le lecteur d’écran.
Pour en savoir plus :
Voici quelques exemples d'attributs ARIA :
-
aria-label
: permet de titrer l'objet (équivalent du title). -
aria-labelledby
: est utilisé pour indiquer les ID des éléments qui titrent l'objet. -
aria-describedby
: est utilisé pour indiquer les ID des éléments qui décrivent l'objet. aria-required
: élément obligatoirearia-checked
: élément cochéaria-invalid
: élément invalide-
aria-live
: permet de restituer le contenu à la suite d'un nouvel événément déclenché aria-expanded
: élément déplié/replié-
aria-hidden
: élément caché (visible visuellement mais caché au lecteur d'écran)
Et voilà, avec l'ajout des attributs HTML, on rend accessible facilement et c'est peu coûteux.
A quel moment on commence à concevoir l'accessibilité numérique ?
Dès le début du projet !
"On ne le dira jamais assez : un site n’est accessible que si son accessibilité est pensée dès sa conception !"
— Accessi_Net (@Accessi_Net) le 9 janvier 2021
Et non pas à la fin du projet !
On n'intègre pas l'accessibilité à la fin du projet car il faudra refaire chaque page où l'accessibilité fait défaut. Du coup, ça coûte plus cher de le faire à la fin.
L'accessibilité numérique ne concerne pas que les sites internets mais aussi les sites intranets et extranets.
Article à lire : L’accessibilité numérique à toutes les étapes d’un projet
Il n'y a pas de solution magique !
Les outils de surcouche d'accessibilité web ne rendent pas accessibles automatiquement les sites internets et empêchent souvent le fonctionnement du site internet lorsque l'utilisateur ou l'utilisatrice interagit sur le site avec son clavier ou son lecteur d'écran.
La solution pour rendre accessible un site internet est de mettre les mains dans le cambouis, autrement dit dans le code.
Articles à lire :
Démo avec un site accessible
Législations et
documentations
Article 47 de la loi de 2005 pour les administrations
« Les services de communication publique en ligne des services de l'Etat, des collectivités territoriales et des établissements publics qui en dépendent doivent être accessibles aux personnes handicapées. »
Article 106 de la loi de 2016 pour une République numérique
- Extension de l'obligation aux organismes délégataires d’une mission de service public et aux sociétés privées sous conditions de C.A
- Schéma pluriannuel, de mise en accessibilité publié sur les sites
- Mention visible de l'état de conformité du site sur la page
- Sanction administrative
Article 106 de la loi n°2016-1321 pour une République numérique
Sont concernés par l'article 47 de la loi du 11 février 2005 :
- Les sites Web publics ;
- Les sites Web privés dont l'entreprise possède le chiffre d'affaires d'au moins de 250 millions d'euros.
Pour le service public,
-
Pour les sites internet, extranet et intranet :
- Si le site a été publié avant le 23 septembre 2018, il doit être en conformité à partir du 23 septembre 2020.
- Si le site a été publié après le 23 septembre 2018, il doit être en conformité à partir du 23 septembre 2019.
- Pour les applications mobiles, les progiciels et le mobilier urbain, ce sera à partir du 23 juin 2021.
Pour le secteur privé,
-
Pour les sites internet, extranet et intranet :
- Tous les sites publiés après le 1er octobre 2019 doivent être en conformité dès leur publication.
- Tous les sites publiés avant le 1er octobre 2019 doivent être en conformité à partir du 1er octobre 2020.
- Pour les applications mobiles, les progiciels et le mobilier urbain du service privé, ce sera à partir du 1er juillet 2021.
Référentiel général d'amélioration de l'accessibilité (RGAA)
Le RGAA permet de contrôler l’accessibilité d’un site et de ses contenus suivant les normes internationales de l’accessibilité numérique connues sous l’appellation de WCAG.
Ressources :
Sensibilisation et wiki
- L'accessibilité numérique, et si nous agissions ?
- Thread sur l'accessibilité web lors des 20 ans du WCAG
- Le wiki de la Lutine du Web
Référentiels
Outils de tests
Accessibility Insights
aide les développeurs à trouver et à résoudre les problèmes
d'accessibilité dans les applications et sites Web.
Assistant RGAA (extension FF et Chrome)
tests automatiques ou assistés pour l'ensemble des tests du
RGAA 3 et RGAA 4.
Axe Deque (extension FF et Chrome)
réalisation d’un certain nombre de tests automatiques
(accessible depuis l'inspecteur de code dans l'onglet «
Accessibility Audit »)
The W3C Markup Validation Service
(EN)
permet de vérifier si votre page HTML est conforme dans les
règles standards du HTML.
WCAG Contrast Checker (extension
FF)
contrôle des contrastes de couleurs.
Accompagnement et audits
Ces mêmes agences spécialisées dans l'accessibilité numérique vous proposent également de l'accompagnement et de l'audit de vos projets informatiques.
Merci !
Retrouvez ma présentation :
https://emma11y.github.io/debuter-a11y-conference/