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é...

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
Rendu visuel du formulaire de connexion
Ce que le lecteur d'écran lit
Rendu textuel du lecteur d'écran

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
Rendu visuel du formulaire de connexion
Ce que le lecteur d'écran lit
Rendu textuel du lecteur d'écran

Comment renseigner les champs obligatoires accessibles ?

Un formulaire de connexion avec deux champs identifiant et mot de passe suivis d'étoiles rouges

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 :

Rendu textuel du lecteur d'écran

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 ?

Rendu visuel des liens, des boutons et champs ayant le focus.
  • Ne supprimez pas le focus mis par défaut depuis le CSS : a { outline: none; }. Autrement laissez-le a { 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
Rendu visuel de la page contenant deux articles en latin
Ce que le lecteur d'écran lit
Rendu textuel du lecteur d'écran

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
Rendu visuel inchangé de la page contenant deux articles en latin
Ce que le lecteur d'écran lit
Rendu textuel du lecteur d'écran

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
Rendu visuel pour choisir le moyen de paiement avec trois boutons VISA, Mastercard et PayPal
Ce que le lecteur d'écran lit
Rendu textuel non valide

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
Rendu visuel pour choisir le moyen de paiement avec trois boutons VISA, Mastercard et PayPal
Ce que le lecteur d'écran lit
Rendu textuel valide

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

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

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 et footer sont obligatoires.
  • main est unique et nav réservé aux zones de navigation.

Attribuez les rôles à la structure du document

Visuel montrant la structure du document avec les rôles banner, navigation, search, main et contentinfo

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 tag header
  • L'attribut role="main" est placé dans le tag main
  • L'attribut role="content-info" est placé dans le tag footer
  • L'attribut role="search" est utilisé dans une div 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)

Exemple d'un site pertube la structure du site en zoom, les blocs se chevauchent des uns des autres

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

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 obligatoire
  • aria-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 !

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.

Consulter l'article 47 en intégralité

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.

Décision unilatérale du gouvernement de reporter à 2027 l’échéance d’accessibilité des sites internet publics : réaction du CNCPH

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 :

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.

Formations

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 !

Posez vos questions

Code-barre pour poser vos questions

Donnez vos feedbacks

Code-barre pour donner vos feedbacks