Comment débuter dans l'accessibilité numérique ?

Emmanuelle ABOAF

AccessibilityCon - 03/02/2021

Twitter : @eaboaf_

Au programme

  1. Définition de l'accessibilité numérique
  2. Comment coder accessible ?
  3. ARIA
  4. Documentations

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.
  • Les vidéos ne sont pas sous-titrés ni audio-décrits.
  • 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/liens identiques non titrés, je ne sais pas où cliquer.

Quand les utilisateurs ont des problèmes d'accessibilité...

Donc l'accessibilité numérique, c'est quoi ?

« Il s’agit de rendre l’information et le contenu du site accessibles aux personnes handicapées quelque soit la nature du handicap et quelque soit la façon dont c’est consulté. »

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 d’où la nécessité de sous-titrer les vidéos.
  • Déficientes motrices (Ex : IMC, tétraplégie, Parkinson)
    • Par exemple, les personnes atteintes de Parkinson tremblent tellement qu’elles 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 atteintes de photosensibilité. Il faut donc assurer les contrastes suffisantes pour l’utilisateur.
  • Et n'oublions pas les personnes âgées !

L'accessibilité, une affaire de tous

« On cherche à faciliter la vie aux utilisateurs ayant une déficience invalidante — dyslexie, daltonisme, surdité, mauvaise vue, etc. —, on en vient à faciliter la vie de tous les utilisateurs. »

Quelles sont
vos armes ?

  • Un clavier ;
  • Un lecteur d'écran ;
  • Et c'est tout.

Les lecteurs d'écran existants sont :

  • NVDA (Windows)
  • VoiceOver (IOS)
  • TallBack (Android)

En savoir plus sur l'usage des lecteurs d'écran

C'est facile de rendre accessible et surtout peu coûteux.
Mais comment ?

Comment penser accessible avec les composants simples et régulièrements 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 ?

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.

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.

Pour en savoir plus sur l'utilisation de l'attribut alt (EN)

Vous naviguez le site avec votre clavier ? Pensez à mettre en valeur les éléments et à vérifier qu'ils ont le focus.

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.

Article à lire : Don't do it (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

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

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 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 le texte. Si vous voulez grossir le texte, 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

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)

L'attribut role et ses valeurs permettent de nous donner des informations sur le but de l'élément en question.

Grâce à ces rôles, les lecteurs d'écrans détectent, au chargement de la page, immédiatement la navigation ou les navigations, la bannière, le contenu principal, la zone de recherche et le pied de page.

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 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 connaître les techniques ARIA

Pour implémenter les composants riches ARIA

Kit de survie du développeur ARIA

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 !

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

Les outils de surcouche d’accessibilité web : mensonges et boules de gomme

Accessibilité Web : Bilan 2020 des plaintes provenant des États-Unis et le rôle des outils de sur-couche

Documentations

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.

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 »)

WCAG Contrast Checker (extension FF)
contrôle des contrastes de couleurs.

Web Developper Toolbar (extension FF et Chrome)
réalisation d’un certain nombre de tests (cf. méthodologie de test RGAA).

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.

Des questions ?