Créer des pages web accessibles

Apprends à créer des pages web utilisables par tous : au clavier, avec un lecteur d’écran et avec le zoom. Pars du HTML sémantique et de la structure de la page, rédige des alternatives textuelles utiles pour les images et les médias, et rends chaque contrôle accessible avec un focus visible. Vérifie le contraste des couleurs, évite de te fier à la couleur seule et garde les mises en page utilisables à un zoom de 400 %. Crée des formulaires avec des étiquettes, des aides et des messages d’erreur clairs, ajoute ARIA uniquement lorsque HTML ne propose pas de solution native et teste tes pages avec des outils automatisés et à la main. Tout au long du cours, l’objectif est le niveau AA des WCAG 2.2.

DébutantUnité 7 sur 8 de la formation Formation : HTML et CSS : création et publication de sites web

Ce que tu vas apprendre

  1. Utilise les éléments HTML selon leur sens afin que les navigateurs, les lecteurs d’écran et les claviers puissent fonctionner avec tes pages, et comprends ce que les technologies d’assistance reçoivent de ton code.
    • Explique comment les technologies d’assistance lisent une page web
      Décris qui dépend d’un code accessible, comment le navigateur transforme le HTML en arbre d’accessibilité et comment le niveau AA des WCAG 2.2 fixe un objectif vérifiable.
    • Donne à chaque page une structure claire qui facilite la navigation
      Définis la langue et le titre de la page, balise les régions repères, les titres et les listes, et veille à ce que l’ordre dans le code source ait un sens.
    • Choisis des éléments natifs pour les liens, les boutons, les contrôles et les tableaux
      Choisis des liens pour la navigation et des boutons pour les actions, rédige des intitulés de liens explicites, privilégie les contrôles intégrés et balise les tableaux de données pour que leurs en-têtes soient annoncés.
  2. Donne aux images, aux icônes, aux graphiques, au son et à la vidéo un équivalent textuel qui remplit la même fonction, et masque les contenus purement décoratifs aux technologies d’assistance.
    • Rédige une alternative textuelle adaptée à la fonction de chaque image
      Détermine si une image est informative, décorative, fonctionnelle, une image de texte ou une image complexe, et rédige le texte alt adapté.
    • Nomme les icônes et les graphiques SVG et fournis des alternatives textuelles aux médias
      Donne un nom accessible aux boutons avec icône et aux SVG intégrés au code, masque les graphiques décoratifs et ajoute des sous-titres pour sourds et malentendants, des transcriptions textuelles et une audiodescription au son et à la vidéo.
  3. Permets à chacun d’atteindre et d’utiliser chaque contrôle au clavier dans un ordre logique, de toujours voir où se trouve le focus, de passer les contenus répétés et de garder sa place lorsque la page change.
    • Utilise une page au clavier en suivant un ordre de focus logique
      Utilise les touches standard, sache quels éléments reçoivent le focus, utilise correctement tabindex et garde un ordre de focus logique, sans pièges ni arrêts invisibles.
    • Rends le focus bien visible et les contrôles faciles à cibler
      Garde un indicateur de focus visible et bien contrasté, évite que l’élément ayant le focus soit masqué et donne aux cibles du pointeur une taille ou un espacement suffisant.
    • Ajoute des liens d’évitement et gère le focus lorsque le contenu change
      Permets aux utilisateurs du clavier de passer les blocs répétés, déplace le focus de façon adaptée lorsqu’un contenu s’ouvre, se ferme ou disparaît, et évite les changements non demandés par l’utilisateur.
  4. Choisis des associations de couleurs suffisamment contrastées, ne laisse jamais la couleur transmettre seule une information et garde les pages utilisables lorsque les personnes zooment ou agrandissent le texte.
    • Mesure le contraste des couleurs et respecte les exigences
      Calcule et vérifie les rapports de contraste du texte et des éléments d’interface, et applique les seuils AA des WCAG et leurs exceptions.
    • Associe la couleur à d’autres indications
      Veille à ce que les liens, les erreurs, les champs obligatoires, les graphiques et les indicateurs d’état ne reposent pas uniquement sur la couleur.
    • Garde les pages utilisables avec le zoom ou l’agrandissement du texte
      Utilise des unités relatives et des mises en page souples afin que les pages restent utilisables avec un texte agrandi à 200 %, un zoom à 400 % et un espacement du texte personnalisé, sans perte de contenu.
  5. Associe une étiquette à chaque contrôle, regroupe les contrôles liés, fournis des consignes et des informations de remplissage automatique, et présente les erreurs et les messages d’état pour que chacun puisse remplir un formulaire.
    • Associe une étiquette à chaque contrôle de formulaire et regroupe les contrôles liés
      Associe des étiquettes visibles aux champs, regroupe les boutons radio et les cases à cocher, nomme les boutons et choisis des types de champs adaptés aux données.
    • Donne des consignes, signale les champs obligatoires et prends en charge le remplissage automatique
      Associe les aides aux champs, indique quels champs sont obligatoires, ajoute des jetons de remplissage automatique et évite les étapes qui obligent à saisir de nouveau ou à mémoriser des informations.
    • Présente clairement les erreurs et les messages d’état
      Identifie et explique les erreurs de saisie par écrit, associe-les à leurs champs et annonce les messages qui apparaissent sans déplacer le focus.
  6. Ajoute ARIA uniquement lorsque HTML ne propose pas de solution native, garde ses états synchronisés et vérifie les pages avec des outils automatisés ainsi qu’à la main avec un clavier, le zoom et un lecteur d’écran.
    • Applique les règles d’utilisation d’ARIA
      Explique ce qu’ARIA modifie et ce qu’il ne modifie pas, privilégie le HTML natif, évite les usages nuisibles d’ARIA et comprends comment le nom accessible d’un élément est choisi.
    • Signale les changements d’état avec ARIA
      Utilise correctement aria-expanded, aria-current, aria-pressed et aria-hidden, et garde chaque état synchronisé avec ce qu’affiche la page.
    • Lance des vérifications automatisées de l’accessibilité et interprète les résultats
      Utilise des outils de vérification automatisés pour trouver les problèmes détectables par logiciel, comprends ce qu’ils ne peuvent pas juger et transforme leurs rapports en corrections classées par priorité.
    • Teste manuellement avec un clavier, le zoom et un lecteur d’écran
      Parcours une page au clavier seul, vérifie le zoom et la redistribution, essaie les fonctions de base d’un lecteur d’écran, inspecte l’arbre d’accessibilité et consigne tes résultats.

Pages web accessibles : cours

6 chapitres

1

Structure les pages avec du HTML sémantique

Le HTML d’une page donne aux navigateurs et aux technologies d’assistance les informations nécessaires pour la décrire et permettre son utilisation. Commence par comprendre l’arbre d’accessibilité, puis construis un plan de page que l’on peut parcourir grâce aux régions repères, aux titres et aux listes. Choisis les liens, les boutons et les éléments de tableau selon leur fonction, et laisse CSS gérer leur apparence. Ces choix donnent une structure fiable à toutes les fonctionnalités ajoutées ensuite.

1.1 Explique comment les technologies d’assistance lisent une page web

Une page accessible permet aux personnes d’obtenir des informations et d’accomplir des tâches avec les outils qu’elles utilisent. Ces outils peuvent comprendre un clavier, un lecteur d’écran, une loupe ou une commande vocale. Une page peut sembler terminée alors que son code bloque encore ces utilisateurs.

Ce que reçoit une technologie d’assistance

Le navigateur lit le HTML et construit le DOM, son modèle du document. Il en déduit un arbre d’accessibilité qui décrit les objets porteurs de sens aux technologies d’assistance. Un contrôle a besoin d’un rôle, d’un nom et des états ou propriétés pertinents. Par exemple, une case à cocher peut avoir le rôle « case à cocher », le nom « Offres par e-mail » et l’état « cochée ».

Un lecteur d’écran lit le contenu à voix haute ou l’envoie à une plage braille. NVDA et JAWS fonctionnent sur Windows ; Narrator est intégré à Windows, VoiceOver à macOS et iOS, et TalkBack à Android. Les lecteurs d’écran permettent de parcourir les titres, les liens et les contrôles sans lire chaque ligne. Certains peuvent aussi indiquer les réglages de police ou de couleur. Les loupes montrent la page visuelle agrandie : sa clarté compte donc aussi.

La commande vocale permet de prononcer le nom d’un contrôle, par exemple « cliquer sur Rechercher ». Les contacteurs peuvent envoyer des commandes semblables à celles d’un clavier. La prise en charge du clavier et des noms exacts aident donc plusieurs groupes d’utilisateurs, et pas seulement les personnes qui écoutent une synthèse vocale.

Commence par le bon élément

Compare ces deux façons de créer un contrôle d’enregistrement :

<button type="button">Save</button>
<div class="btn" onclick="save()">Save</div>

Le bouton expose déjà son rôle et son nom. Il reçoit le focus avec Tab et réagit à Entrée et à Espace. CSS peut rendre la deuxième ligne visuellement identique, mais un div ne possède aucun de ces comportements de bouton. Un lecteur d’écran peut déclencher son gestionnaire de clic en mode lecture, mais il n’annonce pas l’élément comme un bouton. Une personne qui navigue avec Tab ne peut pas l’atteindre.

Le HTML sémantique consiste à choisir un élément selon le sens du contenu ou du contrôle. Utilise CSS pour régler son apparence. Cela donne au navigateur une base solide et évite de devoir reconstruire le comportement natif avec un script.

Connais l’objectif

Le W3C publie les Règles pour l’accessibilité des contenus web, ou WCAG. Leurs critères de succès sont des exigences vérifiables, chacune désignée par un numéro, un nom et un niveau. Par exemple, 1.4.3 Contraste (minimum) est de niveau AA. Les WCAG 2.2 sont devenues une recommandation en octobre 2023 et ont été mises à jour en décembre 2024.

La conformité au niveau AA exige tous les critères de niveau A et de niveau AA. Réussir quelques vérifications AA ne suffit pas. Le niveau AAA ajoute d’autres exigences. Les WCAG 2.2 ajoutent neuf critères à la version 2.1, dont six de niveau A ou AA, et suppriment le critère obsolète 4.1.1 Analyse syntaxique.

L’accessibilité comprend aussi la lisibilité du texte agrandi, les sous-titres pour sourds et malentendants, des consignes claires et des erreurs utiles. Intégrer ces fonctionnalités à la page dès le début évite de devoir remplacer un HTML inadapté une fois la mise en page terminée.

Points clés

  • Choisis les éléments HTML selon leur sens, puis mets-les en forme avec CSS.
  • L’arbre d’accessibilité expose les rôles, les noms, les états et les propriétés.
  • Les boutons natifs fournissent un comportement au clavier dont un div mis en forme est dépourvu.
  • Le niveau AA des WCAG 2.2 exige tous les critères de succès de niveau A et AA.

1.2 Donne à chaque page une structure claire qui facilite la navigation

Une structure de page utile donne plusieurs moyens de se repérer. Un titre descriptif identifie la page, les régions repères désignent ses zones et les titres révèlent son plan. Ces éléments ont besoin d’une véritable sémantique HTML, même lorsque la présentation visuelle semble déjà claire.

Identifie la page et sa langue

Définis la langue principale sur l’élément racine, par exemple <html lang="en-US">. Les lecteurs d’écran s’en servent pour choisir les règles de prononciation. Signale un changement de langue dans la page sur l’élément concerné : <span lang="fr">bon appétit</span>. Ces indications répondent aux critères 3.1.1 Langue de la page (A) et 3.1.2 Langue d’un passage (AA).

Donne à chaque page un <title> unique et descriptif. « Commander un gâteau d’anniversaire - Boulangerie Green Leaf » est plus utile dans les onglets, les favoris et les annonces des lecteurs d’écran que « Boulangerie Green Leaf - Page 4 ». Place le sujet précis en premier pour que les utilisateurs distinguent rapidement des onglets similaires.

Divise la page en régions

Utilise <main> pour le contenu principal, <nav> pour la navigation et <aside> pour le contenu complémentaire. Un <header> au niveau de la page fournit la région repère de bannière et un <footer> au niveau de la page fournit les informations sur le contenu. Les éléments d’en-tête et de pied de page imbriqués dans des régions de sectionnement ne deviennent pas ces régions repères de page.

Utilise un seul <main> visible. S’il y a deux régions de navigation, distingue-les par des noms comme <nav aria-label="Main"> et <nav aria-label="Breadcrumb">. Le rôle indique déjà « navigation » ; le nom peut donc rester court. Un <section> ou un <form> ne devient une région repère que s’il a un nom accessible.

Construis un plan avant de choisir les tailles de police

Pour la page de commande de la boulangerie, un plan clair pourrait être :

<h1>Order a birthday cake</h1>
<h2>Choose a size</h2>
<h2>Choose a flavor</h2>
<h3>Chocolate</h3>
<h3>Lemon</h3>
<h2>Pickup or delivery</h2>

Utilise un h1 pour le sujet principal, des h2 pour les sections principales et des h3 pour leurs parties. Évite de sauter des niveaux en descendant. Choisis les niveaux de titre selon la structure ; ajuste leur taille avec CSS. Un paragraphe en gras n’entre pas dans la liste des titres du lecteur d’écran. À l’inverse, placer une introduction ordinaire dans un h2 ajoute une section que le contenu ne possède pas.

Préserve les regroupements et l’ordre de lecture

Utilise <ul> pour les éléments non ordonnés, <ol> pour les étapes ordonnées et <dl> pour les paires terme-description. Les lecteurs d’écran peuvent annoncer la taille d’une liste, ce qui aide les utilisateurs à évaluer la quantité de contenu qui suit. Les liens de navigation peuvent se trouver dans un ul à l’intérieur de nav. Dans Safari, supprimer les puces avec list-style: none peut empêcher VoiceOver d’annoncer les listes ; role="list" sur la liste rétablit cette annonce.

Écris le HTML dans un ordre de lecture qui a un sens. La propriété order de Flexbox, l’inversion de sa direction, le placement dans une grille et le positionnement absolu changent ce que les personnes voient sans changer l’ordre du DOM. Une rangée qui commence visuellement par « Se connecter » mais où Tab n’atteint cet élément qu’en dernier est plus difficile à suivre. Corrige l’ordre dans le code source avant de disposer les éléments.

Examine une structure de page

Le site d’une boulangerie comporte un menu principal et un second ensemble de liens pour le fil d’Ariane. Donne des noms distincts aux régions tout en conservant les deux ensembles de liens :

<nav aria-label="Main">
  <ul><li><a href="/bread">Bread</a></li></ul>
</nav>
<nav aria-label="Breadcrumb">
  <ol><li><a href="/">Home</a></li></ol>
</nav>
<main>
  <h1>Order a loaf</h1>
  <h2>Choose your bread</h2>
</main>

Inspecte la liste des régions repères : Main et Breadcrumb désignent des fonctions de navigation différentes, suivies du contenu principal. Inspecte ensuite la liste des titres : elle doit montrer le sujet de la page et sa première section. Ces deux listes offrent des parcours différents dans le même document ; aucune ne dépend des couleurs du menu ni de la taille de police du titre.

Points clés

  • Définis la langue de la page et signale les passages dans une autre langue.
  • Donne à chaque page un titre précis et une seule région principale visible.
  • Utilise de vrais niveaux de titre pour exprimer le plan.
  • Utilise les éléments de liste pour les groupes d’éléments et les étapes ordonnées.
  • Fais correspondre l’ordre visuel à un ordre cohérent dans le code source.

1.3 Choisis des éléments natifs pour les liens, les boutons, les contrôles et les tableaux

L’élément utilisé pour un contrôle indique aux utilisateurs à quoi s’attendre. Un lien annonce une destination ; un bouton annonce une action. Les contrôles et les éléments de tableau natifs fournissent aussi des relations qu’il serait difficile de recréer à partir de boîtes génériques mises en forme.

Choisis entre navigation et action
FonctionHTMLActivation standard
Aller à une autre page, à un fichier ou à un endroit de la page<a href="/classes">Baking classes</a>Entrée
Effectuer une action sur la page courante<button type="button">Show filters</button>Entrée ou Espace

Une ancre sans href n’est pas un lien ordinaire pouvant recevoir le focus clavier. Une ancre avec href="#" et un gestionnaire de clic qui ouvre un menu annonce une navigation alors qu’elle effectue une action. Utilise un bouton pour ce menu. Dans un formulaire, donne type="button" aux boutons qui ne doivent pas l’envoyer ; sinon, leur comportement par défaut peut envoyer le formulaire.

Rends les destinations claires

Un lecteur d’écran peut rassembler les liens de la page dans une liste. Des liens répétés « En savoir plus » y sont difficiles à distinguer. « Découvrir les cours de pain au levain » nomme directement la destination. Le critère WCAG 2.4.4 Fonction du lien (selon le contexte) (A) autorise le contexte proche à expliquer un lien, mais un intitulé explicite est aussi compréhensible lorsqu’il est entendu seul.

Signale un téléchargement ou un nouvel onglet dans l’intitulé du lien : « Liste des prix (PDF, 2 Mo) » ou « Formulaire de réservation (s’ouvre dans un nouvel onglet) ». Un nouvel onglet modifie le fonctionnement du bouton Retour. Utilise une description plutôt qu’une longue URL brute lorsque c’est possible.

Chaque lien et chaque bouton a besoin d’un nom accessible. Un lien vers le panier composé uniquement d’une image a besoin d’un texte qui indique sa destination ; une image sans alternative peut laisser un lien sans nom ou identifié par un nom de fichier. Nommer le contrôle est aussi nécessaire que choisir le bon rôle.

Conserve le comportement intégré

Utilise les cases à cocher, les boutons radio et les contrôles select natifs. Ils fonctionnent au clavier et leurs états sont annoncés. Une zone dépliable simple peut utiliser uniquement du HTML :

<details>
  <summary>Delivery options</summary>
  <p>We deliver within 10 km.</p>
</details>

Le résumé reçoit le focus clavier et la zone dépliable expose son état ouvert ou fermé. Une rangée personnalisée avec une icône triangulaire nécessiterait d’implémenter ces fonctionnalités séparément.

Associe les données d’un tableau à leurs en-têtes

Utilise des tableaux pour les données qui présentent des relations entre lignes et colonnes. Un titre de tableau nomme l’ensemble de données ; th identifie les en-têtes ; scope indique au navigateur quelles cellules un en-tête décrit.

<table>
  <caption>Shop opening hours</caption>
  <tr><th scope="col">Day</th><th scope="col">Opens</th></tr>
  <tr><th scope="row">Saturday</th><td>08:00</td></tr>
</table>

Une personne qui se déplace vers la cellule de l’heure peut entendre le jour et l’en-tête de colonne associés. Une grille CSS composée d’éléments div perd ces relations intégrées. Pour la mise en page, utilise Flexbox ou une grille CSS ; un tableau de mise en page peut créer une navigation trompeuse dans un tableau là où il n’existe aucune véritable relation entre les données.

Points clés

  • Utilise des liens pour les destinations et des boutons pour les actions.
  • Nomme clairement les liens et signale les téléchargements ou les nouveaux onglets.
  • Privilégie les contrôles et les zones dépliables natifs pour leur comportement intégré.
  • Utilise des titres de tableau, des cellules d’en-tête et scope dans les tableaux de données.
  • Utilise CSS pour organiser la mise en page.
2

Fournis des alternatives textuelles aux contenus non textuels

Les images, les icônes et les médias peuvent transmettre des informations absentes du texte ordinaire de la page. Choisis chaque alternative selon sa fonction : une photo de produit nécessite des mots différents de ceux d’une icône de recherche, et une vidéo demande plus qu’une description d’image. Découvre où placer les alternatives courtes, quand une explication plus longue est nécessaire et comment les sous-titres pour sourds et malentendants, les transcriptions textuelles et l’audiodescription répondent aux différentes façons d’utiliser les médias.

2.1 Rédige une alternative textuelle adaptée à la fonction de chaque image

L’alternative textuelle transmet l’information utile ou la fonction d’une image à une personne qui ne peut pas la voir. Détermine ce que l’image apporte sur cette page précise avant de décrire son apparence. Une même photographie peut nécessiter des textes différents selon le contexte.

Choisis selon la fonction

Pour une photographie informative de produit, alt="Round sourdough loaf with a dark, cracked crust" décrit ce qu’un acheteur doit savoir. Sur une page consacrée aux défauts de cuisson, l’élément important pourrait plutôt être une croûte brûlée. Imagine que tu lis la page au téléphone : inclus l’information que la personne qui écoute manquerait autrement.

Pour une image purement décorative, utilise alt="". Une alternative vide indique aux lecteurs d’écran de passer l’image. Omettre l’attribut est différent : un lecteur d’écran peut annoncer un nom de fichier comme « IMG tiret bas 4032 point jpg ». Un arrière-plan purement décoratif peut aussi être placé en CSS.

Nomme une fonction, pas une forme

Lorsqu’une image est le seul contenu d’un lien ou d’un bouton, son alternative fournit le nom du contrôle. Un lien vers l’accueil peut être :

<a href="/">
  <img src="logo.svg" alt="Green Leaf Bakery home">
</a>

Pour un bouton de recherche, utilise « Rechercher », et non « Loupe ». L’utilisateur doit savoir ce que l’activation du contrôle va faire. Si un lien de produit contient déjà les mots visibles « Pain de seigle », une photo dans ce même lien peut utiliser alt="" pour que le nom du lien ne soit pas répété.

Traite le texte et les graphiques complexes

Une image de texte doit contenir les mêmes mots dans son alternative. Une bannière de soldes portant « Soldes d’été : 20 % de réduction sur tous les pains » a besoin de ces mots, et non de « Bannière de soldes ». Privilégie du vrai texte HTML mis en forme avec CSS lorsque c’est possible. Il peut être redimensionné, traduit et redistribué ; le critère WCAG 1.4.5 Images de texte (AA) exige du vrai texte lorsque la technologie le permet, avec des exceptions comme les logos.

Un graphique, un diagramme ou une carte contient souvent trop d’informations pour une alternative courte. Donne-lui une brève identification, puis fournis une description plus complète à proximité. Par exemple, alt="Bar chart of monthly website visitors, January to June" identifie le graphique. Le texte à proximité peut expliquer que le nombre de visiteurs est passé de 1 200 à 3 000, tandis qu’un tableau de données fournit les valeurs individuelles lorsqu’elles sont nécessaires. Un <figure> avec <figcaption> peut regrouper le graphique et son explication.

Sélectionne les détails utiles

Limite une alternative textuelle ordinaire à une expression ou une phrase concise. Les lecteurs d’écran identifient déjà une image ; commencer par « Image de » n’ajoute donc généralement rien d’utile. Supprime les mots répétés juste à côté et les mots-clés de recherche qui n’aident pas la personne à comprendre la page.

Le critère WCAG 1.1.1 Contenu non textuel (A) exige une fonction équivalente, et non une description de chaque détail visible. L’attribut title n’est pas un remplacement fiable : il n’est pas annoncé de façon systématique ni disponible lors de l’utilisation au clavier et au tactile. Place l’alternative d’une image dans alt et garde toute explication plus longue dans la page elle-même.

Points clés

  • Rédige l’alternative textuelle selon la fonction de l’image dans le contexte de sa page.
  • Utilise alt="" pour les éléments décoratifs ; n’omets pas l’attribut.
  • Les images fonctionnelles nomment l’action ou la destination.
  • Utilise du texte ou des données à proximité pour les images complexes.
  • Privilégie le vrai texte HTML aux images de texte.

2.2 Nomme les icônes et les graphiques SVG et fournis des alternatives textuelles aux médias

Une icône, un diagramme et une vidéo nécessitent des alternatives différentes. Commence par identifier l’information ou l’action que chacun apporte. Place ensuite l’équivalent là où le navigateur et la personne utilisant la page peuvent le trouver.

Nomme le contrôle qui contient l’icône

Un texte visible à côté d’une icône est généralement plus clair. Si un bouton doit contenir uniquement une icône, fournis un texte masqué visuellement ou une étiquette sur le bouton :

<button type="button" aria-label="Close">✕</button>

Lorsqu’une icône se trouve à côté du texte visible d’un bouton, masque l’icône décorative avec aria-hidden="true". Ne masque pas le bouton entier. Un simple span ou div possède un rôle générique qu’il est interdit de nommer ; y placer aria-label n’est pas un moyen fiable de nommer une icône.

Le texte masqué visuellement reste accessible aux lecteurs d’écran. Une classe CSS réutilisable peut utiliser un positionnement absolu, une largeur et une hauteur de 1 px, un débordement masqué, clip-path: inset(50%) et white-space: nowrap. Contrairement à display: none ou visibility: hidden, elle conserve le texte dans l’arbre d’accessibilité.

Pour un SVG intégré au code et porteur de sens, utilise role="img" et un nom, par exemple aria-labelledby="rating-title" faisant référence à <title id="rating-title">Rated 4 out of 5 stars</title> à l’intérieur du SVG. Un SVG décoratif utilise aria-hidden="true". Un SVG chargé par img reçoit son alternative de alt, comme les autres images. Garde les avertissements porteurs de sens dans le HTML ; les arrière-plans CSS et le contenu généré ne sont pas des emplacements fiables pour les informations essentielles.

Choisis l’alternative adaptée au média
ContenuAlternative nécessaire
Enregistrement uniquement audioTranscription textuelle
Vidéo préenregistrée avec sonSous-titres pour sourds et malentendants ; audiodescription des éléments visuels importants non décrits à l’oral au niveau AA
Vidéo en direct avec sonSous-titres en direct pour sourds et malentendants au niveau AA

Les sous-titres pour sourds et malentendants synchronisent les paroles, les sons importants et l’identification des personnes qui parlent avec la vidéo. Les sous-titres transcrivent ou traduisent les dialogues pour les personnes qui entendent mais ont besoin d’aide pour comprendre la langue. Une transcription textuelle est un compte rendu séparé ; elle ne suit pas le temps de lecture.

<video controls src="bread.mp4">
  <track kind="captions" src="bread-en.vtt"
         srclang="en" label="English">
</video>

Le fichier WebVTT contient des repères synchronisés, comme 00:00:01.000 --> 00:00:04.000, suivis du texte des sous-titres. Vérifie les noms, les termes techniques et la ponctuation des sous-titres automatiques avant publication.

Si une démonstration montre silencieusement un réglage du four, les sous-titres des paroles ne le transmettent pas. L’audiodescription raconte les informations visuelles importantes pendant les pauses ou dans une version audiodécrite. Une alternative textuelle complète incluant les éléments visuels est une option au niveau A ; une vidéo préenregistrée nécessite une audiodescription au niveau AA selon le critère 1.2.5.

Garde la lecture utilisable

Utilise les controls natifs pour le son et la vidéo, et donne aux cadres intégrés un title descriptif, comme « Carte de l’emplacement de notre boutique ». Évite le son en lecture automatique. Un son qui démarre automatiquement et dure plus de 3 secondes doit pouvoir être mis en pause ou arrêté, ou son volume réglé indépendamment du volume général du système.

Associe le nom masqué et le texte synchronisé

Pour un bouton de suppression compact, garde ses mots dans le document :

<button type="button">
  <img src="trash.svg" alt="">
  <span class="visually-hidden">Delete item</span>
</button>

L’image est sautée parce que le texte indique déjà l’action. Applique la classe de masquage sans retirer ce texte de l’arbre d’accessibilité :

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

Un fichier de sous-titres associe quant à lui des mots au temps de lecture. Voici un petit exemple WebVTT :

WEBVTT

00:00:01.000 --> 00:00:03.000
[Mixer whirring]

00:00:03.000 --> 00:00:06.000
Today we bake rye bread.

Le premier repère transmet un son pertinent sans dialogue. Le second transmet des paroles pendant son propre intervalle. Regarde la vidéo avec la piste activée et vérifie que chaque repère apparaît au moment où son son se produit.

Points clés

  • Nomme les contrôles avec icône sur le contrôle lui-même.
  • Le texte masqué visuellement reste accessible aux technologies d’assistance.
  • Donne un rôle et un nom aux graphiques SVG porteurs de sens.
  • Les sous-titres pour sourds et malentendants incluent les paroles et les sons importants ; les transcriptions textuelles accompagnent les enregistrements uniquement audio.
  • L’audiodescription fournit les informations visuelles importantes absentes de la bande-son d’une vidéo.
  • Garde les commandes du lecteur disponibles et nomme les cadres intégrés.
3

Rends toutes les fonctionnalités utilisables au clavier

L’utilisation au clavier dépend d’un parcours clair dans la page et d’une position courante visible. Utilise les contrôles natifs, garde un ordre cohérent et empêche le focus d’atteindre du contenu invisible. Ajoute des raccourcis pour passer la navigation répétée et préserve la place de l’utilisateur lorsqu’une boîte de dialogue s’ouvre ou qu’un élément disparaît. Vérifie la taille des contrôles et la visibilité du focus pour rendre la même interface plus facile à utiliser de plusieurs façons.

3.1 Utilise une page au clavier en suivant un ordre de focus logique

Les utilisateurs du clavier ont besoin d’un parcours couvrant toute la tâche : atteindre un contrôle, le reconnaître, l’actionner et poursuivre. Les contrôles HTML standard prennent déjà en charge ce parcours. Les problèmes apparaissent souvent lorsque la mise en forme ou des contrôles personnalisés perturbent le comportement du navigateur.

Utilise les touches attendues

Tab avance entre les éléments interactifs ; Maj+Tab revient en arrière. Entrée suit les liens et active les boutons. Espace active les boutons et coche ou décoche les cases. Dans un groupe de boutons radio, Tab permet d’entrer dans le groupe ou d’en sortir et les flèches permettent de passer d’une option à l’autre. Les flèches fonctionnent aussi dans les listes de sélection natives. Échap ferme les boîtes de dialogue et de nombreux menus.

Les liens avec href, les boutons, les champs de saisie, les listes de sélection, les zones de texte multiligne, les éléments summary et les médias avec commandes peuvent recevoir le focus par défaut. Les paragraphes, les titres, les images, les conteneurs génériques et les ancres sans href ne sont pas des arrêts de tabulation ordinaires. Un lecteur d’écran possède des commandes de lecture distinctes pour le texte : ajouter chaque titre à l’ordre de tabulation ralentit donc la navigation au clavier.

Sur macOS, active la navigation au clavier pour les tests. Le réglage Safari « Appuyer sur Tab pour mettre en surbrillance chaque élément d’une page web » détermine si la navigation ordinaire avec Tab atteint les liens ; Option+Tab peut les atteindre lorsque ce réglage est désactivé.

Garde des valeurs tabindex simples
ValeurEffet
tabindex="0"Ajoute un arrêt de tabulation dans l’ordre du code source
tabindex="-1"Permet le focus par script ou comme cible d’un lien ; Tab le saute
Une valeur positivePlace un arrêt avant les contrôles ordinaires selon le nombre

Les valeurs positives sont difficiles à maintenir parce qu’elles créent un second système d’ordre. Écris le HTML dans un ordre logique et évite-les. Un titre qui doit recevoir le focus après une mise à jour peut utiliser -1 sans devenir un arrêt à chaque parcours de la page.

Vérifie ensemble le sens et le comportement
<div role="button" tabindex="0">Save</div>

Cet élément expose un rôle de bouton et reçoit le focus, mais il lui faut encore un script pour Entrée et Espace, une action et un style de focus visible. Le remplacer par <button type="button">Save</button> fournit l’activation native au clavier sans avoir à la reconstruire. ARIA seul ne peut pas créer l’interaction.

CSS peut aussi perturber la navigation. Si l’ordre dans le code source est logo, menu, recherche, lien de connexion, la propriété CSS order: -1 peut afficher la connexion en premier alors que Tab ne l’atteint qu’en dernier. Déplace le contenu dans le HTML lorsque l’ordre de lecture doit changer. Le critère WCAG 2.4.3 Parcours du focus (A) exige un ordre qui préserve le sens et l’utilisation.

Supprime les pièges et les arrêts masqués

Teste si le focus peut quitter chaque composant au clavier. Une carte ou un lecteur qui accepte le focus mais ne permet pas d’en sortir au clavier crée un piège au clavier, interdit par le critère 2.1.2 Pas de piège au clavier (A).

Un menu fermé déplacé hors de l’écran ou doté de opacity: 0 peut encore contenir des liens pouvant recevoir le focus. Utilise hidden, display: none ou inert pour le contenu qui doit être indisponible tant qu’il est fermé. Garde toutefois accessible au focus un lien d’évitement hors écran : une règle prévue à cet effet le rend visible lorsqu’il reçoit le focus.

Points clés

  • Utilise le comportement clavier standard pour les liens et les contrôles natifs.
  • Réserve les arrêts de tabulation au contenu interactif.
  • Utilise zéro pour les arrêts dans l’ordre du code source et moins un pour gérer volontairement le focus.
  • Évite les valeurs tabindex positives et les changements d’ordre visuel qui rendent la navigation confuse.
  • Teste la présence de pièges au clavier et vérifie que le focus n’arrive pas sur du contenu masqué.

3.2 Rends le focus bien visible et les contrôles faciles à cibler

Le focus indique la position courante de l’utilisateur du clavier. Un contour visible lui indique quel contrôle sera actionné par Entrée ou Espace. Le contour doit rester visible sur la page et le contrôle ayant le focus doit rester à l’écran.

Garde un indicateur clair

Les navigateurs fournissent un contour de focus par défaut. Le supprimer avec outline: none fait perdre une indication essentielle, sauf si un remplacement adapté est fourni. Utilise :focus-visible pour afficher un contour lorsque le navigateur le juge utile, notamment pendant la navigation au clavier et dans les champs de texte :

:focus-visible {
  outline: 3px solid #1A73E8;
  outline-offset: 2px;
}

Le bleu présente un contraste de 4,51:1 sur blanc. Vérifie les couleurs réellement adjacentes dans la mise en page ; un contour qui fonctionne sur blanc peut se confondre avec un panneau bleu. Le critère WCAG 2.4.7 Visibilité du focus (AA) exige un focus clavier visible, tandis que 1.4.11 Contraste du contenu non textuel (AA) s’applique aux informations visuelles qui identifient un état personnalisé, notamment un indicateur de focus personnalisé, avec un rapport de 3:1.

Un contour est un choix utile pour les thèmes de contraste Windows. Les couleurs forcées peuvent remplacer les arrière-plans et supprimer les ombres de boîte, tandis que les contours restent disponibles. Une ombre seule peut donc disparaître dans un mode dont une personne dépend.

Garde le contrôle ayant le focus à l’écran

Les en-têtes adhérents, les bannières et les contrôles de discussion peuvent masquer le focus. Selon le critère 2.4.11 Focus non masqué (minimum) (AA), un contenu créé par l’auteur ne doit pas entièrement cacher le composant ayant le focus. Garder tout le composant visible facilite son utilisation ; l’exigence selon laquelle aucune partie ne doit être masquée appartient au niveau AAA.

Pour un en-tête adhérent de 5rem de haut, prévois un espace de défilement :

html { scroll-padding-top: 5rem; }

Parcours ensuite la page réelle avec Tab. Vérifie les deux directions et teste lorsqu’une bannière de cookies est présente. La règle CSS est un point de départ ; elle doit encore fonctionner avec les dimensions réelles de l’en-tête et de la zone d’affichage de la page.

Laisse aussi de la place aux utilisateurs du pointeur

Le critère Taille de la cible (minimum), 2.5.8 (AA), exige des cibles du pointeur d’au moins 24 px CSS sur 24, avec des exceptions. Une cible plus petite peut être conforme si un cercle de 24 px de diamètre centré sur elle ne croise ni une autre cible ni le cercle d’une autre petite cible. Les liens dans une phrase, les contrôles non modifiés dont le navigateur fixe la taille et les cibles ayant un contrôle équivalent conforme sur la page sont aussi exemptés. Une présentation essentielle ou légalement requise peut également être exemptée.

Pour trois boutons avec icône de 16 px sur 16 séparés par des espaces de 4 px, les cercles se chevaucheraient. Ajouter une marge intérieure de 4 px de chaque côté donne à chaque cible une taille de 24 px sur 24. Mesure toute la zone cliquable, pas seulement l’icône dessinée à l’intérieur.

La cible de 44 px CSS sur 44 du critère 2.5.5 et l’exigence de surface du focus du critère 2.4.13 sont des exigences AAA. Ce sont des améliorations utiles, mais distingue leur niveau du minimum AA lorsque tu consignes un résultat.

Points clés

  • Garde un indicateur de focus visible sur chaque élément utilisable au clavier.
  • Vérifie le contraste de l’indicateur personnalisé avec les couleurs adjacentes.
  • Empêche les contenus adhérents de masquer entièrement le composant ayant le focus.
  • Mesure toute la cible du pointeur ; le niveau AA exige normalement 24 px CSS sur 24 ou une exception applicable.

3.3 Ajoute des liens d’évitement et gère le focus lorsque le contenu change

Les menus répétés ne devraient pas obliger les personnes à refaire le même parcours sur chaque page. Un lien d’évitement fournit un chemin court vers le contenu principal. Lorsqu’une interaction modifie la page, une gestion réfléchie du focus aide aussi à garder sa place.

Crée et teste un lien d’évitement

Place le lien d’évitement avant les contrôles répétés de l’en-tête :

<a class="skip-link" href="#main">Skip to main content</a>
<main id="main" tabindex="-1">
  <h1>Order a birthday cake</h1>
</main>

Le lien cible la région principale, et tabindex="-1" aide cette région à recevoir le focus sans ajouter un arrêt de tabulation ordinaire. La navigation par régions repères d’un lecteur d’écran aide ses utilisateurs ; le lien d’évitement aide aussi les utilisateurs voyants du clavier à passer les blocs répétés selon le critère 2.4.1 Contourner des blocs (A).

Garde le lien accessible au clavier lorsqu’il est masqué visuellement :

.skip-link { position: absolute; left: -9999px; }
.skip-link:focus { left: 1rem; top: 1rem; }

N’utilise pas display: none ou visibility: hidden, qui empêchent le focus. Recharge la page, appuie une fois sur Tab et vérifie que le lien apparaît. Appuie sur Entrée, puis de nouveau sur Tab : la navigation doit continuer au premier lien ou contrôle du contenu principal, et non au menu de l’en-tête.

Donne une position suivante adaptée au contenu modifié

Si une ligne du panier et son bouton Supprimer ayant le focus disparaissent ensemble, le focus peut revenir au début de la page. Déplace-le volontairement vers le bouton Supprimer de l’article suivant ou vers un titre du panier doté de tabindex="-1". Choisis un endroit qui permet de poursuivre la tâche. Faire simplement défiler la page jusqu’à une région ne garantit pas que le focus clavier s’y est déplacé.

Utilise une boîte de dialogue modale native

Une boîte de dialogue ouverte avec showModal() déplace le focus à l’intérieur et rend le reste de la page inerte. Tab reste à l’intérieur tant que la boîte est ouverte ; Échap la ferme. La fermeture ramène normalement le focus à l’élément qui l’a ouverte, s’il existe toujours.

<button type="button"
  onclick="document.getElementById('hours').showModal()">Opening hours</button>
<dialog id="hours" aria-labelledby="hours-title">
  <h2 id="hours-title">Opening hours</h2>
  <p>Tuesday to Saturday, 08:00–17:00.</p>
  <form method="dialog"><button>Close</button></form>
</dialog>

Le script d’une ligne trouve la boîte de dialogue par son identifiant et l’ouvre en mode modal. Le formulaire de la boîte la ferme sans autre script. Son titre lui fournit son nom. Un calque fait maison exige de recréer toutes ces règles d’interaction ; assombrir l’arrière-plan n’empêche pas le focus clavier de l’atteindre.

Attends une action volontaire

Recevoir le focus ne doit pas ouvrir une nouvelle page ni changer le contexte d’une autre façon. Modifier une sélection ne doit pas non plus le faire de manière inattendue ; les utilisateurs doivent être prévenus si ce comportement se produit. Un bouton « Aller » après un sélecteur de destination laisse aux personnes le temps d’examiner et de modifier leur choix avant de naviguer. Ces comportements répondent aux critères 3.2.1 Au focus (A) et 3.2.2 À la saisie (A).

Points clés

  • Fais du lien d’évitement le premier élément pouvant recevoir le focus et rends-le visible au focus.
  • Teste où mène la tabulation suivante après l’utilisation du lien d’évitement.
  • Déplace volontairement le focus lorsqu’un élément qui l’a reçu est supprimé.
  • Utilise dialog avec showModal() pour obtenir le comportement modal natif.
  • Évite les changements de contexte inattendus au focus ou lors d’une sélection.
4

Garde le texte et les éléments visuels lisibles

Les personnes doivent pouvoir lire et utiliser une page dans différentes conditions d’affichage. Mesure les couleurs de premier plan et d’arrière-plan, associe la couleur à une autre indication et crée des mises en page qui s’agrandissent avec le texte. Une vue lisible sur ordinateur n’est qu’un point de départ : le texte agrandi, la redistribution en largeur réduite et l’espacement personnalisé peuvent révéler des problèmes cachés. Les vérifications présentées ici relient des exigences visuelles précises à des modifications CSS pratiques.

4.1 Mesure le contraste des couleurs et respecte les exigences

Le contraste mesure à quel point une information au premier plan se distingue clairement de son arrière-plan. Une couleur qui semble lisible sur un écran peut être difficile à lire pour une personne malvoyante ou en pleine lumière. Mesure la paire au lieu de la juger à l’œil.

Applique le bon minimum
Élément vérifiéMinimum WCAG AA
Texte normal4,5:1
Texte de grande taille3:1
Information visuelle identifiant un contrôle, son état ou un graphique porteur de sens3:1 avec les couleurs adjacentes

Un texte de grande taille mesure au moins 18 points, soit 24 px CSS, ou au moins 14 points en gras, soit environ 18,7 px CSS en gras. Un titre de 20 px en graisse normale nécessite toujours 4,5:1. Le texte indicatif, le texte du pied de page et le texte aux états de survol et de focus ne sont pas exemptés du contraste du texte. Les logos, les contrôles inactifs et le texte accessoire ou purement décoratif bénéficient d’exceptions.

Comprends le rapport

La luminance relative exprime la luminosité sur une échelle allant de 0 pour le noir à 1 pour le blanc. En prenant la luminance la plus claire pour L1 et la plus foncée pour L2, le rapport est :

L1+0,05L2+0,05

Les extrêmes sont 1:1 pour des couleurs identiques et 21:1 pour du noir sur blanc. Un outil de vérification du contraste calcule la luminance à partir des canaux de couleur et compare le rapport au seuil pertinent.

Pour le gris #767676, chaque canal vaut 76 en hexadécimal, soit 118. Divise par 255 pour obtenir environ 0,4627. Comme ce nombre est supérieur à 0,04045, convertis-le en lumière linéaire :

(0,4627+0,0551,055)2,4≈0,1812

Les trois canaux sont égaux : leur luminance pondérée est donc aussi d’environ 0,1812. Le blanc a une luminance de 1. En gardant toutes les décimales pendant le calcul, on obtient 4,54:1, ce qui est conforme pour le texte normal. Utilise un outil de vérification pour les paires de couleurs réelles afin que des valeurs intermédiaires arrondies n’influencent pas un résultat proche du seuil.

N’arrondis jamais un échec jusqu’à la conformité

Le gris #777777 sur blanc donne 4,48:1. L’afficher à une décimale sous la forme 4,5 ne le rend pas conforme. De même, #949494 sur blanc donne 3,03:1 et est conforme pour le texte de grande taille ; #959595 donne 2,99:1 et n’est pas conforme pour le texte de grande taille.

Le blanc sur #0066CC donne 5,57:1. Sur l’ambre #FFC107, le texte blanc donne seulement 1,63:1, tandis que le noir donne 12,88:1. Choisir un arrière-plan de bouton lumineux ne permet pas de savoir si son texte doit être clair ou foncé.

Vérifie les contours et chaque arrière-plan

La bordure d’un champ nécessaire pour l’identifier doit respecter le contraste du contenu non textuel. #CCCCCC sur blanc donne 1,61:1 et n’est pas conforme ; #949494 donne 3,03:1 et est conforme. La même règle de 3:1 s’applique aux icônes porteuses de sens, aux lignes des graphiques et aux indicateurs de focus personnalisés. Les contrôles inactifs et les contrôles par défaut du navigateur non modifiés bénéficient d’exceptions.

Le texte placé sur une photo ou un dégradé doit être conforme au point le moins contrasté de son arrière-plan. Ajoute un panneau uni ou suffisamment opaque, ou déplace le texte. Vérifie les couleurs obtenues avec les outils de développement ou un outil de vérification du contraste. Le critère WCAG 1.4.3 concerne le texte et 1.4.11 les informations non textuelles ; les seuils AAA pour le texte sont plus élevés : 7:1 pour le texte normal et 4,5:1 pour le texte de grande taille.

Vérifie séparément les parties d’un bouton

Supposons qu’un bouton porte un texte blanc de taille normale sur #0066CC, se trouve sur une page blanche et utilise un contour de focus personnalisé #CCCCCC. Vérifie chaque rapport :

  1. L’étiquette sur le bouton bleu donne 5,57:1, au-dessus du minimum de 4,5:1 pour le texte.
  2. Le bouton bleu sur la page blanche donne aussi 5,57:1 : son contour est donc distinct.
  3. Le contour de focus gris clair sur la page blanche ne donne que 1,61:1. Cet indicateur d’état n’est pas conforme, même si l’étiquette l’est.

Remplace le contour par une couleur qui atteint 3:1 avec son arrière-plan adjacent, puis mesure de nouveau. Une mesure du contraste de l’étiquette du bouton ne mesure pas aussi chaque contour ou état d’interaction. Vérifie séparément les paires de couleurs du texte, du composant et de l’état personnalisé.

Points clés

  • Au niveau AA, le texte normal nécessite 4,5:1 et le texte de grande taille 3:1.
  • Le texte de grande taille est défini par sa taille et sa graisse, pas par son rôle de titre.
  • N’arrondis jamais un résultat à la hausse pour atteindre un seuil de conformité.
  • Les contours et états importants des contrôles ainsi que les graphiques nécessitent 3:1 avec les couleurs adjacentes.
  • Vérifie le texte sur une image au point le moins contrasté de son arrière-plan.
  • Utilise un outil de vérification du contraste pour mesurer la paire de couleurs réelle.

4.2 Associe la couleur à d’autres indications

La couleur peut attirer l’attention, mais elle ne peut pas être le seul indice visible du sens. Les personnes peuvent avoir une déficience de la vision des couleurs, utiliser les niveaux de gris ou des réglages de contraste, ou écouter le contenu avec un lecteur d’écran qui n’annonce pas les couleurs. Associe la couleur à du texte, des formes, des motifs ou une autre indication claire.

Sépare deux vérifications

Le contraste concerne la possibilité de distinguer un premier plan de son arrière-plan. L’utilisation de la couleur, WCAG 1.4.1 (A), concerne la compréhension de l’information sans reconnaissance de la couleur. Une étiquette rouge foncé sur blanc peut respecter le contraste tout en ne permettant pas de comprendre quel champ comporte une erreur.

Commence par le message. Si la page dit « Choisis une option verte », donne aussi un nom utile à chaque option. Si un point rouge signifie qu’une boutique est fermée, ajoute « Actuellement fermé » à côté. Le texte indique l’état, tandis que la couleur aide à le remarquer.

Garde les liens reconnaissables

Le moyen le plus simple d’identifier un lien dans un paragraphe est de le souligner. Cela fournit une indication même lorsque le lien et le texte environnant sont vus en niveaux de gris.

Une différence fondée uniquement sur la couleur par rapport au texte environnant exige un contraste d’au moins 3:1 entre les deux couleurs de texte et une indication supplémentaire, comme un soulignement, au survol et au focus. Le texte du lien doit aussi respecter le contraste du texte avec son arrière-plan. Ce sont des comparaisons distinctes ; un bleu conforme sur blanc peut être trop proche du texte sombre du paragraphe voisin.

Explique les erreurs et les champs obligatoires

Pour une erreur d’adresse e-mail, affiche « Erreur : saisis une adresse e-mail au format nom@exemple.com » à côté du champ. Un contour rouge peut rester comme indication supplémentaire. Le texte identifie le problème et indique à l’utilisateur comment le corriger, tandis que le code l’associe au champ.

Pour les champs obligatoires, utilise une étiquette comme « Adresse e-mail (obligatoire) ». Un astérisque convient aussi lorsque le début du formulaire explique « * signifie obligatoire ». Ajoute l’attribut natif required pour que cette obligation soit disponible pour les technologies d’assistance et la validation du navigateur. Le texte rouge d’une étiquette ne fournit à lui seul ni explication visible suffisante ni obligation exprimée dans le code.

Donne aux graphiques un second moyen de communiquer

Un graphique de ventes comportant deux séries nécessite plus qu’une ligne rouge et une ligne verte. Des indications directes, des styles de trait ou des motifs différents permettent de suivre chaque série sans identifier sa teinte. Utilise ces indications dans le graphique et sa légende pour qu’elles correspondent.

Vérifie la page avec l’émulation des niveaux de gris ou des déficiences de la vision des couleurs dans les outils de développement. Inspecte les liens dans le texte courant, les erreurs, les champs obligatoires, les graphiques et les indicateurs de disponibilité. Demande-toi quel indice visible reste pour chaque distinction. Si une distinction disparaît, ajoute une indication qui exprime ou représente son sens ; augmenter la saturation seule ne fournira pas l’information manquante.

Points clés

  • Associe les différences de couleur porteuses de sens à une autre indication visible.
  • Vérifie séparément le contraste et l’utilisation de la couleur.
  • Souligne les liens ou respecte à la fois les conditions de différence de couleur et d’indication à l’interaction.
  • Utilise du texte pour les erreurs, les champs obligatoires et les indicateurs d’état.

4.3 Garde les pages utilisables avec le zoom ou l’agrandissement du texte

Agrandir une page devrait la rendre plus facile à utiliser sans masquer les contrôles ni couper les phrases. Les personnes peuvent agrandir toute la page, agrandir seulement le texte ou appliquer leur propre espacement. Des mises en page souples permettent de combiner ces choix.

Teste la taille du texte et la redistribution

Le critère WCAG 1.4.4 Redimensionnement du texte (AA) exige que le texte puisse être agrandi à 200 % sans perte de contenu ou de fonctionnalité. Le zoom du navigateur utilise Ctrl et plus sur Windows ou Cmd et plus sur macOS. Teste aussi une taille de police par défaut plus grande, qui modifie le texte sans agrandir tout le reste de la même façon.

Le critère WCAG 1.4.10 Redistribution du contenu (AA) exige que le contenu ordinaire fonctionne à une largeur de 320 px CSS sans défilement dans deux directions. Une fenêtre de 1 280 px CSS de large avec un zoom à 400 % fournit cette largeur effective. Les paragraphes doivent se répartir dans une colonne étroite, avec toutes les fonctionnalités toujours disponibles. Les tableaux de données, les cartes et les autres contenus dont le sens nécessite deux dimensions bénéficient d’exceptions.

Laisse la mise en page grandir avec le texte

Utilise des unités de police relatives comme rem et em afin que le texte suive le réglage de police par défaut de l’utilisateur. Le texte en pixels CSS réagit toujours au zoom du navigateur, mais ne suit pas ce réglage par défaut de la même façon. Les conteneurs souples et max-width permettent aux lignes de se réorganiser ; les points de rupture en em peuvent s’adapter lorsque le texte grandit.

Une hauteur fixe peut couper le contenu sans avertissement :

/* Problem when larger text needs more space */
.card { height: 200px; overflow: hidden; }

/* Content can grow beyond the minimum */
.card { min-height: 200px; }

Laisse le contenu déterminer sa hauteur. Aux petites largeurs, empile la navigation ou propose une zone dépliable accessible au lieu de supprimer des liens. Laisse un en-tête adhérent trop grand défiler hors de l’écran s’il occupe trop de place dans la zone utilisable.

Garde le zoom mobile disponible

Utilise une déclaration de zone d’affichage qui suit la largeur de l’appareil :

<meta name="viewport" content="width=device-width, initial-scale=1">

N’ajoute pas maximum-scale=1 ou user-scalable=no. Ces valeurs cherchent à bloquer le zoom par pincement, dont les personnes malvoyantes peuvent avoir besoin. Certains navigateurs ignorent ces restrictions, mais les utilisateurs ne devraient pas avoir à compter sur ce comportement.

Applique l’espacement de l’utilisateur

Le critère WCAG 1.4.12 Espacement du texte (AA) exige qu’aucun contenu ne soit perdu ni ne se chevauche lorsque les utilisateurs fixent la hauteur de ligne à 1,5 fois la taille de police, l’espacement des paragraphes à 2 fois, l’espacement des lettres à 0,12 fois et l’espacement des mots à 0,16 fois. Ce sont des réglages de test, et non des valeurs de conception par défaut obligatoires. Utilise un outil d’espacement du texte et vérifie les étiquettes, les cartes, les menus et les boutons ainsi que les paragraphes.

Une vérification pratique combine un test du texte à 200 %, un test de redistribution à 320 px CSS et la personnalisation de l’espacement. Recherche les lignes coupées, les étiquettes superposées, le défilement horizontal des paragraphes et les fonctionnalités disparues. Corrige le conteneur ou la mise en page à l’origine du problème ; réduire le texte agrandi par l’utilisateur supprime le bénéfice qu’il recherchait.

Points clés

  • Garde le texte et les fonctionnalités disponibles avec un agrandissement à 200 %.
  • Vérifie la redistribution du contenu ordinaire à une largeur de 320 px CSS.
  • Utilise des tailles de police relatives et des conteneurs qui peuvent grandir.
  • Autorise le zoom par pincement et conserve les fonctionnalités dans les mises en page étroites.
  • Teste les espacements de texte personnalisés pour repérer les coupures et les chevauchements.
5

Crée des formulaires accessibles

Un formulaire accessible explique quoi saisir, rend chaque contrôle facile à identifier et aide à corriger les erreurs. Associe les étiquettes et les consignes visibles dans le HTML, utilise les fonctions de saisie et de remplissage automatique du navigateur et conserve les réponses tout au long d’un processus. Lorsqu’un message apparaît, décide s’il faut y déplacer le focus ou si une annonce peut permettre à l’utilisateur de continuer à travailler à sa place.

5.1 Associe une étiquette à chaque contrôle de formulaire et regroupe les contrôles liés

Une étiquette visible indique à une personne quoi saisir et donne un nom accessible à un champ. Les légendes de groupe ajoutent la question à laquelle plusieurs choix répondent. Les associations doivent exister dans le HTML, même lorsque les étiquettes et les champs paraissent déjà proches.

Associe une étiquette à un contrôle

Une étiquette explicite utilise for pour faire référence à l’id unique du contrôle :

<label for="email">Email address</label>
<input id="email" name="email" type="email">

Le navigateur peut annoncer « Email address » au focus. Cliquer sur le texte donne aussi le focus au champ, ce qui offre aux utilisateurs une cible plus grande. L’attribut name identifie les données envoyées ; il ne remplace pas l’id utilisé par l’étiquette.

Une étiquette implicite englobe son champ : <label>Email address <input type="email" name="email"></label>. Cela fonctionne lorsque les deux tiennent dans le même élément d’étiquette. Avec des conteneurs de mise en page séparés, l’association explicite est plus facile à maintenir.

Un texte indicatif disparaît pendant la saisie et présente souvent un faible contraste. Garde l’étiquette visible et place des exemples ou des indications de format à proximité. « Champ 1 » est techniquement un nom, mais ne décrit pas la fonction. Le critère WCAG 2.4.6 En-têtes et étiquettes (AA) exige une formulation descriptive.

Garde les mots visibles dans le nom

Une personne utilisant une commande vocale peut dire « cliquer sur Send » après avoir vu un bouton Send. Si aria-label="Submit form" remplace le texte de ce bouton, son nom accessible ne contient plus les mots visibles. Le critère WCAG 2.5.3 Étiquette dans le nom (A) exige que ces mots soient inclus, idéalement au début. Utilise le texte visible lui-même lorsque c’est possible : <button type="submit">Send message</button>.

Un champ de recherche isolé peut avoir une étiquette masquée visuellement si un bouton Rechercher à proximité rend sa fonction visuellement claire. Les étiquettes masquées ne remplacent pas de manière générale les consignes visibles dans l’ensemble d’un formulaire.

Regroupe les choix sous leur question
<fieldset>
  <legend>Delivery method</legend>
  <input type="radio" id="pickup" name="delivery" value="pickup">
  <label for="pickup">Pick up in store</label>
  <input type="radio" id="courier" name="delivery" value="courier">
  <label for="courier">Courier delivery</label>
</fieldset>

La légende fournit la question du groupe ; chaque bouton radio a toujours besoin de sa propre étiquette. Les lecteurs d’écran peuvent annoncer le contexte du groupe avec une option. Utilise le même name pour les boutons radio correspondant à des choix mutuellement exclusifs, et des légendes courtes qui restent utiles lorsqu’elles sont répétées. Des cases à cocher liées peuvent aussi utiliser un groupe de champs et une légende.

Choisis les types et vérifie les associations

Utilise email, tel, url et date pour les données correspondantes. Les types e-mail et URL fournissent une vérification du format ; les champs de téléphone peuvent proposer un clavier mobile adapté, mais ne valident pas les formats de numéro de téléphone. Utilise number pour les quantités comme le nombre d’invités, et non pour les identifiants tels que les numéros de téléphone ou de carte.

Clique sur chaque étiquette pour tester son association. Si le mauvais champ reçoit le focus, vérifie si des identifiants sont dupliqués ou si un for ne correspond pas. Inspecte aussi le nom calculé dans les outils de développement ; la proximité visuelle seule ne peut pas associer une étiquette.

Points clés

  • Associe chaque étiquette à l’identifiant unique d’un champ ou englobe son unique contrôle.
  • Garde les étiquettes visibles ; utilise les textes indicatifs uniquement comme contenu complémentaire.
  • Garde le texte visible de l’étiquette dans le nom accessible.
  • Utilise un groupe de champs et une légende pour un ensemble de choix liés.
  • Choisis les types de champs selon la nature des données et vérifie les associations des étiquettes.

5.2 Donne des consignes, signale les champs obligatoires et prends en charge le remplissage automatique

Les consignes sont plus utiles lorsqu’elles arrivent avant une erreur. Un bon formulaire explique la saisie attendue, indique ce qui est obligatoire et prend en charge les outils du navigateur pour saisir les informations personnelles. Il évite aussi de faire répéter inutilement le travail aux utilisateurs.

Associe une aide sans remplacer l’étiquette
<label for="pw">Password (required)</label>
<input id="pw" type="password" required
       autocomplete="new-password" aria-describedby="pw-hint">
<p id="pw-hint">At least 12 characters.</p>

L’étiquette nomme le champ. Le paragraphe visible explique son exigence, et aria-describedby ajoute ce texte comme description. Les lecteurs d’écran peuvent l’annoncer après le nom. Pour plusieurs descriptions, liste leurs identifiants séparés par des espaces, comme dans aria-describedby="pw-hint pw-error".

Signale les champs obligatoires visiblement et avec required. Tu peux écrire « (obligatoire) » ou expliquer un astérisque au début du formulaire. L’attribut natif required prend en charge la validation du navigateur et les technologies d’assistance ; il n’a pas besoin d’un aria-required="true" supplémentaire.

Identifie la fonction des données personnelles

Selon le critère 1.3.5 Identifier la fonction des champs de saisie (AA), les champs qui recueillent les informations de l’utilisateur ont besoin de jetons autocomplete adaptés. Exemples : name, given-name, family-name, email, tel, street-address, postal-code, country-name et bday. Les champs de connexion peuvent utiliser username et current-password ; un nouveau mot de passe utilise new-password, et un code de vérification peut utiliser one-time-code.

Ces jetons permettent aux navigateurs, aux gestionnaires de mots de passe et aux outils d’assistance de reconnaître la fonction d’un champ. Utilise le jeton correspondant à l’utilisateur dont les informations sont saisies. Désigner l’adresse d’un ami comme l’adresse e-mail de l’utilisateur pour le remplissage automatique peut entraîner la saisie de mauvaises coordonnées.

Réduis les exigences de mémorisation et les saisies répétées

Autorise le collage dans les champs de mot de passe et de code de vérification et prends en charge les gestionnaires de mots de passe. Le critère WCAG 3.3.8 Authentification accessible (minimum) (AA) n’autorise les tests cognitifs lors de la connexion qu’avec une alternative ou une aide conforme, ou dans les cas prévus de reconnaissance d’objets ou de contenu personnel. Bloquer le collage crée un obstacle lorsque cela oblige à mémoriser ou à transcrire une information et qu’aucune autre méthode de connexion conforme n’existe.

Pour une commande en plusieurs étapes, reporte les informations déjà saisies. Un choix « L’adresse de facturation est identique à l’adresse de livraison » évite de les saisir à nouveau. Le critère WCAG 3.3.7 Saisie redondante (A) prévoit des exceptions lorsque la répétition est essentielle, nécessaire à la sécurité ou que l’information précédente n’est plus valide.

Prévois une protection pour les envois ayant des conséquences

Une commande peut créer un engagement financier. Avant de la finaliser, propose une étape de vérification permettant aux utilisateurs de corriger les détails. Selon le critère 3.3.4 Prévention des erreurs (juridiques, financières, de données) (AA), les envois concernés doivent pouvoir être annulés, être vérifiés avec une possibilité de correction, ou être examinés et confirmés avec une possibilité de correction. Le champ d’application comprend aussi la modification ou la suppression de données enregistrées contrôlées par l’utilisateur et l’envoi de réponses à un test.

Garde une mise en page facile à suivre lorsque le formulaire est agrandi : des étiquettes directement au-dessus des champs et une colonne principale réduisent la distance entre une consigne et l’endroit où elle s’applique.

Distingue le format de la fonction personnelle

Le type de champ et le jeton de remplissage automatique répondent à des questions différentes. Le type identifie la nature de la valeur et peut fournir une vérification du format. Le jeton identifie l’information personnelle de l’utilisateur pour le remplissage automatique :

<label for="your-email">Your email address (required)</label>
<input id="your-email" name="email" type="email"
       required autocomplete="email">
<label for="guest-email">Guest's email address</label>
<input id="guest-email" name="guest-email" type="email">

Les deux champs acceptent des adresses e-mail, mais seul le premier demande celle de l’utilisateur actuel. Le second ne doit pas être désigné comme l’adresse e-mail de cet utilisateur pour le remplissage automatique. Les étiquettes visibles maintiennent la distinction pour les personnes qui saisissent elles-mêmes les valeurs. Changer un jeton ne modifie pas ce que vérifie le type e-mail.

Points clés

  • Donne des consignes visibles avant la saisie et associe les aides avec aria-describedby.
  • Signale les champs obligatoires à la fois visiblement et avec l’attribut natif required.
  • Utilise des jetons de remplissage automatique adaptés aux informations de l’utilisateur.
  • Prends en charge les gestionnaires de mots de passe et le collage pour réduire les obstacles à la connexion.
  • Réutilise les réponses précédentes dans les processus à plusieurs étapes, sauf si une exception s’applique.
  • Prévois une protection adaptée contre les erreurs pour les envois ayant des conséquences.

5.3 Présente clairement les erreurs et les messages d’état

Un message d’erreur doit aider une personne à corriger le problème sans perdre le travail déjà accompli. Un message d’état doit signaler un changement sans lui faire perdre sa place. Les deux ont besoin d’une formulation visible et de la bonne association dans le code.

Énonce le problème et une correction utile

« Saisie invalide » aide peu. « Erreur : saisis une adresse e-mail au format nom@exemple.com » indique ce qui demande une intervention et suggère une correction. Le critère WCAG 3.3.1 Identification des erreurs (A) exige que les erreurs détectées soient décrites par écrit ; 3.3.3 Suggestion de correction d’erreur (AA) exige de proposer les corrections connues lorsqu’elles ne compromettent pas la sécurité ou l’objectif du formulaire.

<label for="email">Email address</label>
<input id="email" type="email" aria-invalid="true"
       aria-describedby="email-error">
<p id="email-error">Error: Enter an email address in the format name@example.com</p>

Définis aria-invalid="true" seulement après avoir vérifié le champ et trouvé une erreur. L’attribut signale l’état invalide ; la description en explique la raison. Une bordure rouge seule ne fournit ni l’explication textuelle ni l’association.

Aide à trouver plusieurs erreurs

Après l’envoi, un long formulaire peut afficher un récapitulatif des erreurs en haut. Donne-lui un titre comme « Il y a 2 problèmes dans ta commande », puis des liens vers les champs concernés. Permets au récapitulatif de recevoir le focus avec tabindex="-1" et fais en sorte que le script lui donne le focus. Ajouter « Erreur : » au début du titre de la page aide aussi à identifier le changement d’état de la page.

Garde aussi les messages d’erreur à côté de leurs champs et conserve toutes les données déjà saisies. Un lien du récapitulatif mène au champ ; l’explication locale aide pendant la correction. Effacer tous les champs oblige à répéter un travail déjà réussi.

Les attributs de validation natifs comme required, type="email" et minlength peuvent fournir des messages du navigateur. Un système personnalisé peut utiliser novalidate et afficher ses propres messages. Dans les deux cas, les erreurs ont besoin d’un texte que les utilisateurs peuvent trouver et associer au champ concerné.

Annonce un changement sans déplacer le focus

Une mise à jour du panier se produit souvent alors que le focus doit rester sur le bouton Ajouter. Utilise une région dynamique déjà présente dans le document :

<p role="status" id="cart-status"></p>

Lorsqu’un article est ajouté, un script remplace son texte par « 1 pain au levain ajouté à ton panier ». role="status" est poli : il laisse le lecteur d’écran terminer sa lecture en cours avant d’annoncer la mise à jour. Cela répond au critère 4.1.3 Messages d’état (AA).

Réserve role="alert", une annonce prioritaire, aux messages urgents. Des interruptions continuelles rendent les achats ordinaires plus difficiles. Insère la région vide avant de mettre son contenu à jour ; créer la région et son message ensemble ne produit pas une annonce fiable dans de nombreuses configurations. Garde le focus sur la tâche pour les mises à jour ordinaires et déplace-le volontairement dans des situations comme un récapitulatif des erreurs que l’utilisateur doit examiner.

Points clés

  • Identifie les erreurs par écrit et suggère une correction lorsqu’elle est connue.
  • Utilise aria-invalid après une vérification ayant révélé une erreur et associe sa description au champ.
  • Conserve les données saisies et fournis un récapitulatif des erreurs pour les formulaires plus longs.
  • Mets à jour une région d’état existante pour annoncer les changements ordinaires sans déplacer le focus.
  • Réserve les alertes aux messages urgents.
6

Utilise ARIA avec mesure et teste tes pages

ARIA peut décrire des informations que le HTML natif n’exprime pas à lui seul, mais ses indications doivent correspondre au comportement de l’interface. Apprends à choisir les noms et les états avec soin, puis inspecte ce que le navigateur communique. Associe les analyses automatisées aux tests au clavier, avec le zoom et avec un lecteur d’écran pour trouver à la fois les erreurs de code et les obstacles qui demandent un jugement humain. Un résultat utile indique clairement comment reproduire et tester de nouveau le problème.

6.1 Applique les règles d’utilisation d’ARIA

ARIA ajoute des informations à l’arbre d’accessibilité lorsque HTML a besoin d’aide pour exprimer un nom, une relation ou un état. Il ne construit pas l’interaction elle-même. Avant d’ajouter un attribut, vérifie ce que l’élément natif fournit déjà et ce qui manque réellement.

Considère un rôle comme une promesse

WAI-ARIA signifie Accessible Rich Internet Applications. La version 1.2 est devenue une recommandation du W3C en juin 2023. Ses rôles, états et propriétés influencent les informations communiquées aux technologies d’assistance. Un rôle comme button promet un comportement de bouton, mais ne rend pas l’élément apte à recevoir le focus, ne crée pas d’activation au clavier et n’ajoute pas de mise en forme.

Un div avec role="button" a toujours besoin d’une gestion du clavier et du focus. Un vrai button les fournit déjà. Le principe du guide ARIA Authoring Practices « mieux vaut ne pas utiliser ARIA que mal l’utiliser » avertit que des informations incorrectes peuvent induire les utilisateurs en erreur sur l’action d’un contrôle.

Préserve le sens natif

Utilise d’abord les éléments et attributs natifs : nav, button, un champ de case à cocher et l’attribut natif required. Évite de répéter les rôles implicites comme role="main" sur main ou role="button" sur button. Une exception utile est role="list" sur une liste dont la suppression des puces affecte les annonces de VoiceOver.

Ne remplace pas le sens d’un titre par un rôle de bouton. Imbrique un bouton à l’intérieur :

<h2>
  <button type="button" aria-expanded="false">Shipping</button>
</h2>

Le titre apparaît toujours dans la navigation par titres et son bouton expose l’action. Le script doit faire correspondre le contenu affiché et l’état déplié.

Ne place jamais aria-hidden="true" sur un contrôle pouvant recevoir le focus ni sur un ancêtre qui en contient un. Le focus pourrait arriver sur un élément retiré de l’arbre d’accessibilité. role="presentation" et role="none" fonctionnent différemment : ils retirent la sémantique, pas le contenu. Les navigateurs ignorent ces rôles sur les éléments pouvant recevoir le focus ; ils ne peuvent donc pas servir à transformer un lien actif en texte ordinaire.

Trouve la source d’un nom

Pour les contrôles ordinaires présentés ici, vérifie les sources du nom dans cet ordre de priorité :

  1. aria-labelledby, qui fait référence à du texte par son identifiant.
  2. aria-label, qui fournit une chaîne de texte.
  3. La source native, comme une étiquette, le texte d’un bouton ou l’alternative textuelle d’une image.
  4. title, en dernier recours lorsque c’est applicable.

aria-describedby ajoute une description après le nom ; il ne définit pas le nom. Un attribut prioritaire peut masquer accidentellement une formulation visible utile. <button aria-label="Close dialog">Cancel</button> est annoncé comme « Close dialog », alors que la personne voit « Cancel ». Privilégie le texte visible ou inclus-le au début d’un nom développé nécessaire.

Les sites simples ont souvent besoin d’ARIA pour les noms des régions repères répétées, les boutons avec icône, les aides et erreurs des champs, les boutons de dépliage, les liens vers la page courante et les mises à jour dynamiques. Une grande quantité d’attributs ARIA n’est pas une mesure de qualité. Inspecte le rôle et le nom calculés et utilise le clavier pour vérifier le comportement promis par le rôle.

Suis les sources de nom concurrentes

Considère un bouton doté de plusieurs attributs de nommage :

<h2 id="options-title">Delivery options</h2>
<button type="button" aria-labelledby="options-title"
        aria-label="Choose delivery">Show pickup options</button>

Suis d’abord aria-labelledby : le texte référencé fournit « Delivery options ». L’attribut aria-label et le texte visible du bouton, moins prioritaires, ne l’emportent pas. Supprimer uniquement aria-label laisse donc le même nom calculé.

Pour que « Show pickup options » nomme ce bouton, supprime les deux attributs prioritaires inutiles. Le rôle de bouton reste le même tout au long de l’opération ; seule la source de son nom change. Inspecte le nom calculé après chaque modification afin de savoir quel attribut a causé la différence. Ajouter une description ne corrigerait pas le nom erroné, car une description est une information distincte.

Points clés

  • Privilégie le sens et le comportement du HTML natif avant d’ajouter ARIA.
  • ARIA modifie l’arbre d’accessibilité, pas la gestion du clavier ni la mise en forme.
  • Préserve la sémantique native lorsque tu ajoutes du contenu interactif.
  • Ne masque jamais avec aria-hidden un élément pouvant recevoir le focus ni l’un de ses ancêtres.
  • Vérifie les attributs qui remplacent les noms ; les descriptions ne remplacent pas les noms.

6.2 Signale les changements d’état avec ARIA

Une interface qui change doit communiquer la même chose visuellement et dans le code. Si un panneau est ouvert mais que son bouton indique encore « replié », un utilisateur de lecteur d’écran reçoit une information fausse. Mets l’état à jour chaque fois que l’interface change.

Garde un bouton de dépliage synchronisé
<button type="button" aria-expanded="false"
        aria-controls="main-menu">Menu</button>
<ul id="main-menu" hidden>
  <li><a href="/bread">Bread</a></li>
</ul>

Lorsque le menu s’ouvre, le script retire hidden et définit l’attribut aria-expanded du bouton sur true. Lorsqu’il se ferme, le script rétablit hidden et définit l’état sur false. L’état appartient au bouton qui commande l’ouverture et la fermeture. aria-controls identifie l’élément concerné ; sa prise en charge varie, il ne peut donc pas remplacer l’état déplié ni le comportement réel de masquage.

Choisis l’état adapté au contrôle
SituationAttribut
Un contrôle ouvre ou ferme un contenuaria-expanded
Un lien de navigation identifie la page courantearia-current="page"
Un bouton reste activé ou désactivéaria-pressed

Pour le lien de la page courante, mets en forme le même attribut en CSS, par exemple avec une police en gras et une bordure inférieure sur a[aria-current="page"]. Cela maintient la mise en évidence visuelle liée à l’état annoncé. aria-selected concerne les composants comme les onglets et les options de liste de sélection, pas les liens ordinaires de navigation entre pages.

Un bouton à bascule peut garder l’étiquette « Couper le son » et faire passer aria-pressed de false à true. Une autre conception valide modifie l’étiquette d’un bouton d’action ordinaire entre « Couper le son » et « Rétablir le son » sans état enfoncé. Ne combine pas une étiquette d’action changeante avec le modèle d’état à bascule, qui peut produire des annonces déroutantes comme « Rétablir le son, enfoncé ».

Distingue le masquage de la désactivation

aria-hidden="true" retire un élément et ses descendants de l’arbre d’accessibilité mais les laisse visibles. Utilise-le pour les icônes décoratives ou les contenus visuels redondants. Il n’empêche pas l’accès au clavier. Utilise hidden ou display: none lorsqu’une région doit être indisponible pour tous.

L’attribut natif disabled empêche l’interaction ordinaire avec un contrôle natif. aria-disabled="true" signale un état indisponible mais ne bloque ni les clics ni l’activation au clavier. Si cet attribut est utilisé pour qu’un contrôle désactivé puisse recevoir le focus et fournir une explication, le script doit empêcher son action. Privilégie aussi les attributs natifs checked et required sur les champs natifs.

Teste dans les deux sens

Ouvre et ferme la zone dépliable au clavier en surveillant les attributs dans les outils de développement. Inspecte l’état calculé et écoute son annonce. Un changement visuel réussi ne prouve pas à lui seul que l’état a été mis à jour, et un attribut modifié ne prouve pas à lui seul que le panneau est devenu visible ou utilisable.

Points clés

  • Mets à jour les états ARIA chaque fois que l’état correspondant de l’interface change.
  • Place aria-expanded sur le contrôle de dépliage.
  • Utilise aria-current="page" pour les liens vers la page courante.
  • Garde stable l’étiquette d’un bouton à bascule qui indique son état enfoncé.
  • Le masquage et la désactivation avec ARIA ne fournissent pas de comportement au clavier ou au clic.

6.3 Lance des vérifications automatisées de l’accessibilité et interprète les résultats

Les vérifications automatisées trouvent rapidement de nombreux problèmes de code dans une page affichée. Utilise leurs résultats pour localiser les obstacles et vérifier les corrections. Leurs règles peuvent inspecter certaines relations et valeurs, mais une personne reste nécessaire pour décider si le contenu a un sens.

Choisis un outil et inspecte ses résultats

Axe DevTools utilise le moteur axe-core. WAVE place des marqueurs sur la page afin que les résultats soient visibles en contexte. Lighthouse, dans les outils de développement de Chrome, donne un score d’accessibilité à partir d’une sélection de vérifications axe-core. Accessibility Insights propose une autre méthode de test. Le service de validation du balisage du W3C vérifie des problèmes HTML comme les identifiants dupliqués et les éléments non fermés.

Selon leurs règles et le contexte, les outils peuvent détecter les attributs alt manquants, les contrôles sans nom, les champs sans étiquette, le faible contraste du texte sur fond uni, l’absence de langue de page et les attributs ARIA invalides. Certains problèmes de niveaux de titre apparaissent comme des avertissements. Lis l’explication du résultat et inspecte l’élément désigné.

Une alerte ou un résultat « à vérifier » demande un jugement. Un texte en gras signalé comme titre possible peut être un véritable titre de section écrit comme paragraphe, ou simplement mettre une phrase en valeur. Examine sa fonction avant de modifier son balisage.

Comprends ce que l’analyse ne peut pas décider

Un outil peut voir alt="photo" sans savoir que l’alternative est inutile. Il ne peut pas juger de manière fiable la clarté d’un intitulé de lien, l’exactitude des sous-titres, la logique de l’ordre de focus ou l’utilité d’un message d’erreur pour corriger un problème. Un calque visuel peut piéger le clavier d’une manière que l’analyse en cours ne détecte pas. Le texte sur une photographie nécessite aussi une vérification manuelle du contraste.

Un score de 100 signifie que les règles testées n’ont trouvé aucun échec. Ce n’est pas un verdict de conformité aux WCAG. Continue à tester les tâches et les significations que ces règles ne peuvent pas évaluer.

Teste les états utilisés par les personnes

Une analyse examine l’état affiché à cet instant. Lance les vérifications sur chaque modèle de page, puis à nouveau avec les menus et les boîtes de dialogue ouverts, après des erreurs de formulaire et aux petites largeurs. Un composant fermé peut cacher des problèmes qui n’apparaissent qu’à l’utilisation.

Supposons qu’un rapport sur une boulangerie trouve une image principale sans alternative, un champ de lettre d’information sans étiquette et du texte de pied de page #999999 sur blanc. Détermine d’abord si l’image informe ou décore. Ajoute une alternative utile ou alt="" selon le cas. Associe le champ e-mail à une étiquette visible. La paire de couleurs du pied de page donne un contraste de 2,85:1 ; remplacer la couleur du texte par #595959 donne 7,00:1 sur blanc.

Corrige les causes et vérifie les résultats

Classe les obstacles selon leur effet sur la tâche. Un piège au clavier ou un contrôle obligatoire sans nom peut empêcher totalement une commande. Corrige un champ ou un composant de pied de page partagé à sa source pour améliorer toutes les pages qui l’utilisent. Relance ensuite l’analyse dans le même état et répète le test manuel pertinent. Une baisse du nombre d’erreurs est un indice utile, mais la correction doit aussi permettre à la personne d’accomplir la tâche.

Points clés

  • Utilise les outils automatisés pour localiser les problèmes détectables par logiciel.
  • Inspecte les alertes et les éléments à vérifier avant de décider d’une correction.
  • Un rapport sans erreur ne couvre que les vérifications que l’outil peut effectuer.
  • Analyse les modèles de page et les états interactifs, pas seulement les pages initiales.
  • Traite en priorité les obstacles bloquant les tâches, corrige les causes partagées et teste de nouveau.

6.4 Teste manuellement avec un clavier, le zoom et un lecteur d’écran

Les tests manuels montrent comment une page se comporte pendant une tâche réelle. Associe l’utilisation du clavier, les vues agrandies, les vérifications avec un lecteur d’écran et l’inspection directe de l’arbre. Consigne assez de détails pour qu’une autre personne puisse reproduire un problème et confirmer sa correction.

Suis une tâche au clavier du début à la fin

Mets la souris de côté. Pars de la barre d’adresse et parcours la page avec Tab. Atteins chaque lien et contrôle, utilise Entrée et Espace selon le cas et inverse la direction avec Maj+Tab. Vérifie que le focus reste visible et n’est pas masqué par une région adhérente.

Utilise le lien d’évitement, ouvre et ferme les menus, ferme une boîte de dialogue avec Échap et vérifie où le focus revient. Recherche les arrêts invisibles dans les composants fermés et les pièges dans les lecteurs ou cartes intégrés. Sur Mac, active la navigation au clavier et le réglage Safari permettant une navigation complète avec Tab avant de considérer que les contrôles sautés sont un défaut de la page.

Agrandis et redistribue la page

Teste avec un agrandissement à 200 % sans perdre de texte ni de fonctionnalité. Utilise ensuite une fenêtre de 1 280 px CSS de large avec un zoom à 400 %, ce qui équivaut à une largeur disponible de 320 px CSS. Vérifie que les paragraphes ne présentent ni défilement horizontal, ni chevauchement, ni coupure. Garde chaque fonction disponible dans la mise en page étroite. Applique les valeurs d’espacement du texte avec un outil et inspecte les contrôles ainsi que le texte courant.

Écoute la structure et les noms

NVDA sur Windows utilise Inser comme touche NVDA par défaut ; Verr. maj. est une alternative facultative. En mode lecture, H parcourt les titres, D les régions repères, K les liens, F les champs, T les tableaux et B les boutons. NVDA+F7 ouvre la liste des éléments. Tab continue à parcourir les contrôles interactifs.

Sur macOS, Cmd+F5 active ou désactive VoiceOver. Son modificateur VO est Contrôle+Option ; VO+Flèche droite lit l’élément suivant et VO+U ouvre le rotor. Sur iPhone, un balayage vers la droite passe à l’élément VoiceOver suivant. TalkBack propose une lecture tactile similaire sur Android.

Écoute si le titre et le plan de la page sont utiles, les noms des contrôles clairs, les rôles corrects, les alternatives aux images utiles et les étiquettes des champs compréhensibles. Les états obligatoires, les aides et les erreurs doivent être disponibles sur les champs concernés. Ouvre une zone dépliable et écoute le changement de son état. Ajoute un article et écoute si une mise à jour d’état est annoncée sans déplacement du focus.

Inspecte, consigne et teste de nouveau

Le panneau Accessibilité de Chrome et l’inspecteur d’accessibilité de Firefox affichent les rôles, noms et états calculés. Ils aident à comprendre pourquoi une étiquette est incorrecte avant même de lancer un lecteur d’écran.

Un rapport utile précise l’emplacement, les étapes, le comportement observé, les utilisateurs concernés, le critère associé et une correction suggérée. Par exemple : « Champ de lettre d’information dans le pied de page : atteindre le champ avec Tab ; il est annoncé sans étiquette. Les utilisateurs de lecteurs d’écran et de commandes vocales ne peuvent pas identifier sa fonction. Ajouter une étiquette Adresse e-mail associée ; vérifier les critères 1.3.1, 3.3.2 et 4.1.2. »

Teste de nouveau avec la méthode qui a permis de trouver le problème. Les associations courantes comprennent NVDA avec Firefox ou Chrome, JAWS avec Chrome et VoiceOver avec Safari. Tester avec des personnes qui utilisent quotidiennement des technologies d’assistance peut révéler des obstacles que l’utilisation occasionnelle par un développeur ne détecte pas.

Rends une erreur d’état reproductible

Un rapport sur un bouton de dépliage peut consigner un court test complet :

  1. Sur la page des pains, utilise NVDA avec Firefox et atteins « Options de livraison » avec Tab.
  2. Appuie une fois sur Entrée. Le panneau devient visible, mais le bouton est toujours annoncé comme replié.
  3. Inspecte le bouton : aria-expanded vaut toujours false.

L’utilisateur concerné entend que le panneau visible reste fermé. Consigne le critère 4.1.2 Nom, rôle et valeur (A) et suggère de mettre à jour l’état du bouton lorsque le panneau change. Après la correction, répète l’ouverture et la fermeture avec les mêmes touches et la même association d’outils. Vérifie que la visibilité du panneau et l’état déplié annoncé correspondent dans les deux sens ; inspecter seulement l’état initial replié ne détecterait pas cette erreur.

Points clés

  • Teste une tâche complète au clavier dans les deux sens.
  • Vérifie l’agrandissement, la redistribution et l’espacement personnalisé.
  • Écoute la structure, les noms, les états, les erreurs et les mises à jour dynamiques.
  • Utilise l’arbre d’accessibilité pour retrouver l’origine des informations calculées.
  • Consigne des résultats reproductibles et teste de nouveau la correction avec la même méthode.
  • Fais participer aux tests des utilisateurs quotidiens de technologies d’assistance lorsque c’est possible.

Pages web accessibles : exemples

6 Leçons Interactives

1

Crée une page qui s’explique elle-même

12 étapes
Transforme une page de boulangerie en un plan cohérent avec des contrôles utilisables et un tableau de données.
  1. 1
    IntroductionLis la page à travers son code

    Une page de boulangerie paraît claire : un grand titre, un menu, des noms de sections en gras et un contrôle d’enregistrement. Vérifie maintenant si le code exprime ces mêmes significations, car les lecteurs d’écran utilisent l’arbre d’accessibilité que le navigateur construit à partir du code, et non l’apparence. Tu suivras l’interprétation du navigateur, construiras un plan de titres et choisiras des contrôles natifs qui fonctionnent sans souris.

  2. 2
    ExplicationTrouve le rôle, le nom et l’état

    Le navigateur déduit un arbre d’accessibilité du document HTML. Le rôle d’un contrôle indique ce qu’il est, son nom l’identifie et son état indique sa condition.

    Une case cochée « Offres par e-mail » a besoin des trois. Les lecteurs d’écran utilisent ces informations pour la synthèse vocale ou le braille ; la mise en forme visuelle seule ne peut pas les fournir de manière fiable.

  3. 3
    ExempleCorrige un contrôle d’enregistrement

    La page utilise un div cliquable. Il ressemble à un bouton, mais n’a ni rôle de bouton natif, ni arrêt de tabulation, ni activation par Entrée ou Espace.

    Remplace-le par :

    <button type="button">Save</button>
    

    Le texte fournit le nom et l’élément fournit le comportement du bouton. Utilise Tab pour l’atteindre, puis Entrée et Espace pour vérifier son activation. Mets le bouton en forme avec CSS pour conserver l’apparence souhaitée ; il n’est pas nécessaire de le reconstruire comme conteneur générique.

  4. 4
    DéfiChoisis la vérification suivante

    Le bouton d’enregistrement fonctionne à la souris. Un développeur affirme que cela prouve aussi son accessibilité au clavier. Que dois-tu faire ?

    ---reveal---

    Atteins-le avec Tab et active-le avec Entrée et Espace. L’activation à la souris ne teste qu’un seul moyen d’utilisation. Un bouton natif fournit ces comportements au clavier, tandis qu’un élément générique cliquable peut encore les bloquer.

  5. 5
    ExempleDonne une identité à la page

    Commence par identifier la langue et le sujet de la page :

    <html lang="en-US">
    <head>
      <title>Choose a cake – Green Leaf Bakery</title>
    </head>
    

    La langue favorise la prononciation. Le titre distingue cette page des autres onglets de la boulangerie et peut être annoncé par les lecteurs d’écran.

    Place le contenu principal dans une seule région main visible. La langue, le titre et la région principale répondent à des questions différentes : comment lire, quelle page est ouverte et où commence son contenu.

  6. 6
    ExempleTransforme les noms de sections en titres

    La page contient un sujet, deux sections et un parfum dans une section. Encode ces relations :

    <h1>Choose a cake</h1>
    <h2>Sizes</h2>
    <h2>Flavors</h2>
    <h3>Lemon</h3>
    

    Une personne qui écoute peut maintenant utiliser la navigation par titres pour atteindre le bon niveau. Lis uniquement ces noms de titres dans l’ordre : ils doivent toujours décrire le plan de la page. Définis les tailles de police visuelles avec CSS après avoir choisi les niveaux, afin qu’une section principale d’apparence plus petite puisse tout de même être un h2.

  7. 7
    DéfiGarde un plan cohérent

    « Détails du retrait » est une section principale, mais h4 a justement la taille de police souhaitée. Quel balisage dois-tu utiliser ?

    ---reveal---

    Utilise h2 pour cette section principale et règle sa taille de police. Les niveaux de titre expriment les relations entre les sections. Choisir h4 pour son apparence ferait croire que des sections intermédiaires manquent dans le plan.

  8. 8
    ConseilVérifie le parcours dans le code source

    Lis les titres comme une liste et inspecte l’ordre du HTML. L’ordre Flexbox peut déplacer visuellement un lien de connexion au début tout en le laissant en dernier dans le DOM.

    Déplace-le dans le HTML si c’est sa position logique. Utilise de vrais éléments de liste pour les liens regroupés afin que le navigateur puisse exposer à la fois le regroupement et sa taille.

  9. 9
    ExplicationChoisis ce que promet le contrôle

    « Voir les cours » mène à une autre page : utilise donc une ancre avec href. « Afficher les filtres » modifie la page courante : utilise donc un bouton.

    Un lien s’active avec Entrée ; un bouton s’active avec Entrée ou Espace. Dans un formulaire, définis type="button" sur Afficher les filtres pour qu’il n’envoie pas accidentellement le formulaire.

  10. 10
    ExempleAssocie les horaires d’ouverture aux en-têtes

    Les horaires d’ouverture présentent des relations entre les lignes et les colonnes. Encode un petit tableau :

    <table>
      <caption>Opening hours</caption>
      <tr><th scope="col">Day</th><th scope="col">Opens</th></tr>
      <tr><th scope="row">Friday</th><td>08:00</td></tr>
    </table>
    

    Le titre nomme le tableau. Une personne qui se déplace vers 08 h 00 peut entendre la ligne du vendredi et la colonne d’ouverture. Les cellules d’en-tête et leurs portées fournissent ce contexte ; disposer des boîtes ordinaires en lignes ne l’encoderait pas.

  11. 11
    DéfiExamine une petite modification de la page

    Un nouveau lien « Commander maintenant » mène à /order. Le tableau des horaires d’ouverture est reconstruit avec des boîtes div, et son titre reste un paragraphe en gras. Qu’est-ce qui doit rester en HTML natif ?

    ---reveal---

    Garde la destination sous forme d’ancre avec href et les horaires d’ouverture sous forme d’un vrai tableau avec un titre et des en-têtes dont la portée est définie. Le gras ne peut pas fournir un titre de tableau ni des relations entre les en-têtes et les cellules.

  12. 12
    RécapitulatifInspecte le sens avant l’apparence

    Vérifie les informations de rôle et de nom, la langue, le titre, les régions repères, les titres et l’ordre dans le code source de la page. Vérifie ensuite les liens, les boutons, les contrôles natifs et les relations du tableau. Un plan obtenu avec un lecteur d’écran et un court parcours au clavier donnent deux vues pratiques du fonctionnement de la structure.

2

Choisis la bonne alternative

10 étapes
Donne aux photos, aux icônes et aux médias de la boulangerie des équivalents qui préservent leur fonction.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDemande-toi ce qui manquerait
  2. 2
    ExplicationDétermine si la photo informe
  3. 3
    ExempleNomme un lien image selon sa destination
  4. 4
    ExempleRends un graphique accessible par écrit
  5. 5
    DéfiDécris la fonction d’un bouton
  6. 6
    ExempleGarde un seul nom utile pour le bouton
  7. 7
    ExplicationSynchronise les paroles et les sons avec la lecture
  8. 8
    ExplicationFournis l’information visuelle manquante
  9. 9
    DéfiComplète les alternatives aux médias
  10. 10
    RécapitulatifChoisis selon la fonction et le média
3

Suis le focus pendant un achat

13 étapes
Teste l’ordre au clavier, le focus visible, les liens d’évitement et une boîte de dialogue native.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionSuis la position de l’utilisateur
  2. 2
    ExplicationUtilise le parcours clavier natif
  3. 3
    ExempleSupprime les arrêts invisibles
  4. 4
    DéfiCorrige le parcours
  5. 5
    ExempleRétablis un contour clair
  6. 6
    ExempleRegarde sous l’en-tête adhérent
  7. 7
    DéfiMesure une petite cible
  8. 8
    ExempleAjoute le parcours d’évitement
  9. 9
    DéfiTeste le lien d’évitement lui-même
  10. 10
    ExempleOuvre la boîte de dialogue native
  11. 11
    ConseilPréserve une place utile après la suppression
  12. 12
    DéfiRelie le focus et la visibilité
  13. 13
    RécapitulatifRépète toute l’interaction
4

Vérifie la lisibilité d’une page de boulangerie

12 étapes
Mesure le contraste, ajoute des indications indépendantes de la couleur et teste les mises en page agrandies.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionTeste trois aspects de la lisibilité
  2. 2
    ExplicationChoisis le seuil avant de mesurer
  3. 3
    ExempleCompare une couleur proche du seuil
  4. 4
    DéfiVérifie deux utilisations d’une même couleur
  5. 5
    ExplicationAjoute du sens au-delà de la teinte
  6. 6
    DéfiVérifie les séries d’un graphique
  7. 7
    ExempleTrouve le conteneur qui coupe le contenu
  8. 8
    ExempleRéduis la largeur effective de la vue
  9. 9
    ConseilApplique l’espacement comme le ferait un utilisateur
  10. 10
    DéfiCorrige la mise en page étroite
  11. 11
    LienCombine les vérifications
  12. 12
    RécapitulatifGarde les mêmes informations disponibles
5

Aide un client à terminer une commande

13 étapes
Crée des aides de formulaire associées aux champs, corrige les erreurs et annonce les mises à jour du panier.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionSuis toute la tâche du formulaire
  2. 2
    ExempleAssocie l’étiquette de l’adresse e-mail
  3. 3
    ExempleFournis la question commune
  4. 4
    DéfiCorrige une différence avec le nom visible
  5. 5
    ExplicationAjoute l’aide avant l’erreur
  6. 6
    ExemplePrends en charge les outils de saisie
  7. 7
    DéfiReporte une réponse
  8. 8
    ExempleIdentifie un champ invalide
  9. 9
    ExempleDonne un point d’entrée unique à plusieurs erreurs
  10. 10
    DéfiAnnonce le résultat dans le panier
  11. 11
    LienVérifie avant de confirmer
  12. 12
    DéfiRelie la correction des erreurs et l’effort de saisie
  13. 13
    RécapitulatifVérifie les étiquettes, les aides et les messages
6

Vérifie l’interface visible et l’interface annoncée

16 étapes
Corrige les noms et les états ARIA, interprète une analyse et rédige un résultat de test manuel reproductible.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionCompare les informations communiquées par la page
  2. 2
    ExplicationVérifie ce qu’ARIA peut modifier
  3. 3
    ExempleTrouve l’origine d’un nom surprenant
  4. 4
    DéfiPréserve deux significations
  5. 5
    ExempleFais correspondre l’état à son panneau
  6. 6
    Point cléGarde stable l’étiquette d’un bouton à bascule
  7. 7
    DéfiChoisis l’état de la page
  8. 8
    ExplicationLis l’analyse comme un élément de preuve
  9. 9
    ExempleCorrige la source partagée
  10. 10
    DéfiInterprète un résultat sans erreur
  11. 11
    ExempleParcours le trajet manuellement
  12. 12
    ExempleÉcoute les noms et la structure
  13. 13
    ExempleRédige un résultat reproductible
  14. 14
    DéfiChoisis le nouveau test
  15. 15
    DéfiTermine la vérification combinée
  16. 16
    RécapitulatifVérifie chaque type de promesse

Pages web accessibles : QCM

50 Questions Pratiques en 5 séries

Série 1 : Applique les règles aux différents états réels d’une page10 Questions Pratiques

Question 1 sur 10

Un formulaire contient un bouton « Ajouter une note » qui ouvre un panneau facultatif, mais un clic dessus envoie la commande. Quel attribut natif empêche directement cet envoi ?
  1. type="button" sur le bouton.
  2. aria-expanded="false" sur le bouton.
  3. role="button" sur le bouton.
  4. tabindex="-1" sur le bouton.
Afficher la réponseMasquer la réponse
Réponse : A
Dans un formulaire, un bouton envoie celui-ci par défaut, sauf si son type change. Le type button empêche cette action d’envoyer le formulaire tout en préservant l’utilisation native au clavier. Aria-expanded décrit l’état du panneau facultatif, mais ne modifie pas le comportement d’envoi du formulaire par le navigateur.

Question 2 sur 10

Une vidéo de pétrissage préenregistrée comporte des sous-titres exacts pour les paroles. Elle montre silencieusement la texture de la pâte qui indique que le pétrissage est terminé. Le lecteur possède des commandes natives. Quel ajout corrige le problème multimédia restant au niveau AA ?
  1. Une transcription des dialogues qui répète les sous-titres.
  2. Un nom accessible qui nomme à nouveau le bouton de lecture.
  3. Une audiodescription de l’indication importante donnée par la texture.
  4. Des sous-titres dans la même langue que les paroles existantes.
Afficher la réponseMasquer la réponse
Réponse : C
L’indication importante de fin est visuelle et absente de la bande-son : l’audiodescription la rend donc accessible aux personnes aveugles au niveau AA. Répéter les dialogues dans une transcription ou des sous-titres laisserait toujours cette indication absente. Les sous-titres existants et les commandes natives répondent à d’autres aspects de l’utilisation du média.

Question 3 sur 10

Un groupe de choix de livraison utilise des boutons radio natifs. Comment une personne utilisant le clavier doit-elle normalement changer le choix sélectionné après être entrée dans le groupe ?
  1. Appuyer sur Tab séparément pour chaque choix radio.
  2. Appuyer sur Échap pour sélectionner le choix radio suivant.
  3. Appuyer sur Espace pour passer au groupe de formulaire suivant.
  4. Utiliser les flèches pour passer d’un choix à l’autre.
Afficher la réponseMasquer la réponse
Réponse : D
Les groupes de boutons radio natifs utilisent les flèches pour passer d’une option à l’autre et la sélectionner, tandis que Tab permet d’entrer dans le groupe ou d’en sortir. Considérer chaque choix comme un arrêt de tabulation distinct et obligatoire ne correspond pas au comportement attendu du groupe. Les champs natifs offrent ce fonctionnement familier sans gestion personnalisée des touches.

Question 4 sur 10

Une barre d’outils comporte deux boutons carrés avec icône sur une même rangée horizontale. Aucune exception pour les éléments dans le texte, les contrôles équivalents ou autre ne s’applique, sauf éventuellement celle concernant l’espacement des cibles. Quelle conception respecte le critère AA Taille de la cible (minimum) ?
  1. Deux cibles carrées de 16 px, espacées de 6 px entre leurs bords.
  2. Deux cibles carrées de 16 px, espacées de 10 px entre leurs bords.
  3. Deux cibles carrées de 22 px, espacées de 1 px entre leurs bords.
  4. Une cible carrée de 24 px et une de 16 px, espacées de 2 px.
Afficher la réponseMasquer la réponse
Réponse : B
Avec des cibles de 16 px et un espace de 10 px, les centres sont distants de 26 px : les cercles de test de 24 px ne se chevauchent donc pas. Les cibles de 22 px restent trop petites et leur espace de 1 px ne laisse que 23 px entre les centres. Dans la conception à tailles mixtes, le cercle de la petite cible dépasse son bord de 4 px et croise la grande cible à travers l’espace de 2 px, même si cette dernière respecte la règle de taille.

Question 5 sur 10

Un panneau utilise la même paire de couleurs, avec un rapport de 3,60:1, pour un texte de 22 px en graisse normale et une bordure nécessaire pour identifier son champ. Comment juger les deux utilisations au niveau AA ?
  1. Le texte est conforme ; la bordure du champ ne l’est pas.
  2. Le texte n’est pas conforme ; la bordure du champ l’est.
  3. Les deux sont conformes car le rapport dépasse 3:1.
  4. Les deux échouent car chaque partie exige 4,5:1.
Afficher la réponseMasquer la réponse
Réponse : B
Le texte de 22 px en graisse normale n’est pas considéré comme du texte de grande taille : son rapport de 3,60:1 est donc inférieur aux 4,5:1 exigés. La bordure nécessaire du champ relève du minimum de 3:1 pour le contenu non textuel et est conforme. Considérer les deux utilisations comme conformes parce que leurs couleurs correspondent revient à oublier leur classification : la taille et la graisse du texte déterminent son seuil, tandis que la bordure sert à identifier le contrôle.

Question 6 sur 10

Quelle unité de police suit directement la taille de police racine et aide à respecter le réglage de texte par défaut de l’utilisateur ?
  1. rem.
  2. px.
  3. vh.
  4. vw.
Afficher la réponseMasquer la réponse
Réponse : A
Rem exprime une taille relative à la taille de police racine et peut donc suivre le réglage de police par défaut de l’utilisateur. Le texte défini en pixels s’agrandit toujours avec le zoom du navigateur, mais ne suit pas ce réglage par défaut de la même façon. Les unités relatives à la zone d’affichage suivent ses dimensions plutôt que la taille du texte racine.

Question 7 sur 10

Plusieurs cases à cocher répondent à « Quels types de pain t’intéressent ? ». Chaque case possède déjà sa propre étiquette. Quel balisage ajoute leur question commune dans le code ?
  1. Un paragraphe au-dessus d’un conteneur par ailleurs générique.
  2. Un texte indicatif répété dans chaque case à cocher.
  3. Un identifiant commun attribué à toutes les cases à cocher.
  4. Un fieldset contenant cette question dans son legend.
Afficher la réponseMasquer la réponse
Réponse : D
Un fieldset et un legend regroupent les contrôles liés et fournissent leur question commune. Les étiquettes individuelles restent nécessaires pour nommer chaque type de pain. Un paragraphe proche peut ressembler à une question de groupe, mais la proximité seule n’encode pas la relation de groupe pour les technologies d’assistance.

Question 8 sur 10

Un champ obligatoire possède déjà une étiquette correcte et une aide visible dont l’identifiant est « hint ». La valeur saisie échoue à une vérification et une erreur précise porte l’identifiant « err ». La valeur doit rester disponible et les deux descriptions doivent être entendues. Quelle mise à jour répond à ces trois besoins ?
  1. Garder la valeur ; définir aria-invalid sur false et aria-describedby="hint err".
  2. Effacer la valeur ; définir aria-invalid sur true et aria-describedby="hint err".
  3. Garder la valeur ; définir aria-invalid sur true et aria-describedby="hint err".
  4. Garder la valeur ; définir aria-invalid sur true et aria-labelledby="hint err".
Afficher la réponseMasquer la réponse
Réponse : C
Conserve la valeur, marque l’échec détecté en définissant aria-invalid sur true et référence l’aide et l’erreur avec aria-describedby. Leurs identifiants séparés par un espace rendent les deux descriptions disponibles après l’étiquette existante. Aria-labelledby utiliserait ces textes comme nom du champ : il remplacerait donc l’étiquette correcte au lieu de préserver ce nom et d’ajouter les descriptions demandées.

Question 9 sur 10

Un bouton contient le texte « Back », aria-label="Return" et aria-labelledby="previous-title". Le titre référencé indique « Previous step ». Quel nom le développeur doit-il s’attendre à voir lors de l’inspection ?
  1. « Return ».
  2. « Back ».
  3. « Back Return ».
  4. « Previous step ».
Afficher la réponseMasquer la réponse
Réponse : D
Ici, aria-labelledby est prioritaire sur aria-label et sur le texte natif du bouton : le titre référencé fournit donc « Previous step ». Le texte « Back », qui paraît plus proche, ne l’emporte pas sur cet attribut prioritaire. Le développeur doit aussi vérifier que le nom final contient l’étiquette visible pour l’utilisation des commandes vocales.

Question 10 sur 10

Une analyse signale qu’une image de séparation décorative n’a pas d’alternative textuelle. Quelle correction correspond à la fonction réelle de l’image ?
  1. Ajouter alt="Divider image" pour la décrire.
  2. Utiliser le nom du fichier comme alternative.
  3. Ajouter alt="" pour passer l’image de séparation.
  4. Déplacer la description dans son attribut title.
Afficher la réponseMasquer la réponse
Réponse : C
Une image de séparation décorative n’ajoute aucune information : une alternative vide indique donc aux lecteurs d’écran de la passer. Ajouter une description générique peut supprimer un avertissement d’attribut manquant tout en ajoutant une lecture inutile. La bonne correction dépend de la fonction de l’image, et pas seulement de la demande d’attribut de l’outil.
Série 2 : Choisis une structure claire et des contrôles natifs10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Le contrôle « Enregistrer la recette » d’une boulangerie est un bouton natif. Quelles deux touches doivent l’activer ?
  1. Tab et Maj+Tab.
  2. Entrée et Espace.
  3. Entrée et Maj+Tab.
  4. Espace et Échap.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une page possède un h1 nommé « Cours de boulangerie » et un h2 nommé « Cours du week-end ». Quel niveau de titre convient à « Débutants du dimanche », qui fait partie des cours du week-end ?
  1. h2, avec une taille de police définie en CSS.
  2. h4, pour montrer que le titre est plus petit.
  3. h3, avec une taille de police définie en CSS.
  4. p, mis en gras pour préserver le plan.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Quel élément HTML convient à un contrôle qui mène l’utilisateur à la page /delivery de la boulangerie ?
  1. Une ancre avec href="/delivery".
  2. Un bouton avec type="button".
  3. Une ancre sans attribut href.
  4. Un élément summary dans un élément details.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Une photo de pain et les mots visibles « Olive loaf » se trouvent dans le même lien de produit. La photo n’ajoute aucune information au-delà de l’identification du produit. Quelle alternative textuelle convient à la photo ?
  1. alt="Olive loaf".
  2. alt="Product image".
  3. Aucun attribut alt.
  4. alt="".
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Un entretien enregistré dans une boulangerie est proposé uniquement en audio. De quelle alternative textuelle a-t-il besoin ?
  1. Une piste de sous-titres vidéo synchronisés.
  2. Une description de la photo de couverture.
  3. Un titre indiquant le sujet de l’entretien.
  4. Une transcription textuelle de l’enregistrement.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Tab atteint les liens d’un menu mobile qui paraît fermé parce qu’il possède opacity: 0. Que faut-il modifier pendant que le menu est fermé ?
  1. Ajouter aria-hidden="true" à la région.
  2. Donner tabindex="0" à chaque lien.
  3. Masquer la région avec hidden.
  4. Déplacer la région plus loin hors écran.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Un outil donne à une paire de couleurs un rapport de 4,49:1. Respecte-t-elle le niveau AA pour un texte courant de 16 px CSS en graisse normale ?
  1. Non ; le texte normal nécessite au moins 4,5:1.
  2. Oui ; l’arrondi à une décimale donne 4,5.
  3. Oui ; le texte courant normal ne nécessite que 3:1.
  4. Non ; tout texte courant doit atteindre 7:1 au niveau AA.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Le balisage est <label for="buyer-email">Email address</label><input id="email" name="buyer-email" type="email">. Qu’est-ce qui corrige directement l’association de l’étiquette ?
  1. Changer le type du champ en texte simple.
  2. Changer l’identifiant du champ en buyer-email.
  3. Changer le texte de l’étiquette en buyer-email.
  4. Changer le nom du champ en email.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un titre « Ingredients » possède role="button", tabindex="0" et aria-label="Expand". Les clics de souris déplient le contenu, mais Espace ne fait rien et la navigation par titres le saute. Quelle structure corrige la navigation par titres, les touches du bouton et la différence avec le nom visible ?
  1. Un bouton natif Ingredients dans le h2, en gardant aria-label="Expand".
  2. Le rôle de bouton sur le h2 existant, avec aria-label changé en « Ingredients ».
  3. Une ancre nommée Ingredients dans le h2, avec href="#" et le gestionnaire de clic.
  4. Un bouton natif Ingredients dans le h2, sans le nom prioritaire Expand.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un outil signale une étiquette manquante dans un pied de page réutilisé sur 12 pages de boulangerie. Il signale aussi un texte en gras comme titre possible à vérifier. Comment le développeur doit-il traiter ces deux résultats ?
  1. Corriger l’étiquette partagée et examiner la fonction du texte en gras.
  2. Corriger chaque pied de page et transformer tout texte en gras en h2.
  3. Nommer le champ avec un texte indicatif et ignorer l’alerte à vérifier.
  4. Masquer les deux résultats jusqu’à ce qu’un lecteur d’écran signale une erreur.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Garde le focus, les consignes et les états clairs10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Où faut-il déclarer la langue principale de la page ?
  1. Dans name sur l’élément body.
  2. Dans aria-label sur le titre principal.
  3. Dans title sur l’élément de navigation.
  4. Dans lang sur l’élément html.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une page de recette utilise une photographie uniquement comme bordure décorative. Quelle alternative à l’image convient à sa fonction ?
  1. Un attribut alt vide.
  2. Une phrase décrivant chaque décoration.
  3. Le titre de la recette répété dans alt.
  4. Le nom de fichier original de la photographie.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un bouton de passage à la caisse ayant le focus possède un contour clair, mais une bannière de cookies adhérente le masque complètement. Quelle exigence AA n’est toujours pas respectée ?
  1. Visibilité du focus.
  2. Taille de la cible (minimum).
  3. Focus non masqué (minimum).
  4. Apparence du focus.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un lien d’évitement est premier dans le code source mais utilise display: none. Sa destination est une région principale sans identifiant. Quelle correction rend le parcours utilisable sans ajouter la région principale à chaque séquence de tabulation ?
  1. Garder le lien apte à recevoir le focus ; cibler main par identifiant avec tabindex zéro.
  2. Garder display none ; cibler main par identifiant avec tabindex moins un.
  3. Garder le lien apte à recevoir le focus ; cibler main par identifiant avec tabindex moins un.
  4. Garder le lien apte à recevoir le focus ; identifier sa cible par une classe seule.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une boulangerie affiche un point rouge pour « Fermé » et un point vert pour « Ouvert », sans autre indication d’état. Quel changement direct rend le sens accessible sans distinguer les couleurs ?
  1. Augmenter la saturation des deux couleurs.
  2. Agrandir les deux points avec la même marge intérieure.
  3. Ajouter « Fermé » ou « Ouvert » à côté de chaque point.
  4. Utiliser deux couleurs plus contrastées avec le fond.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Avec un texte à 200 %, une carte de recette à hauteur fixe coupe ses dernières lignes. Quel changement CSS traite la cause ?
  1. Garder sa hauteur et réduire la police.
  2. Garder sa hauteur et masquer le débordement.
  3. Garder sa hauteur et déplacer les lignes hors écran.
  4. Laisser sa hauteur grandir avec le contenu.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Un champ de mot de passe possède une étiquette visible et l’aide voisine « Au moins 12 caractères » avec id="pw-help". Quel attribut associe cette aide comme description ?
  1. aria-labelledby="pw-help".
  2. aria-describedby="pw-help".
  3. autocomplete="pw-help".
  4. aria-label="pw-help".
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Après l’échec de la validation d’une commande, le formulaire efface toutes les valeurs. Le champ e-mail reste à aria-invalid="false" et son aria-describedby ne pointe que vers une ancienne aide, alors qu’un nouveau paragraphe d’erreur existe. Quelle correction offre un parcours complet de correction ?
  1. Conserver les valeurs, marquer l’e-mail invalide et référencer les identifiants de l’aide et de l’erreur.
  2. Conserver les valeurs et référencer les deux identifiants, mais laisser l’état invalide du champ à false.
  3. Effacer les valeurs, marquer l’e-mail invalide et remplacer son étiquette par le texte d’erreur.
  4. Conserver les valeurs et marquer l’e-mail invalide, mais laisser l’erreur sans association.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Quel attribut identifie le lien vers la page actuellement ouverte dans une liste de navigation ?
  1. aria-selected="true".
  2. aria-current="page".
  3. aria-pressed="true".
  4. aria-expanded="true".
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un menu est correctement annoncé au chargement. Après son ouverture, ses liens ne peuvent pas être atteints avec Tab, alors que le panneau est visible et que l’état déplié vaut true. Quel plan de vérification permet le mieux de localiser l’obstacle restant ?
  1. Relancer uniquement l’analyse initiale et accepter le nom correct du bouton.
  2. Changer l’état annoncé en false et garder le panneau visible.
  3. Ajouter des étiquettes aux liens et considérer le panneau ouvert comme vérifié.
  4. Tester le parcours au clavier avec le menu ouvert et inspecter l’état affiché des liens.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Diagnostique les obstacles au cours d’une interaction10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

La navigation principale apparaît visuellement en premier, mais CSS la déplace depuis la fin du DOM. Une navigation par fil d’Ariane est aussi présente et les deux régions portent le nom « Liens ». Quelle correction rend plus clairs le parcours et le choix des régions ?
  1. Garder l’ordre du code source et attribuer un tabindex positif à chaque lien de navigation.
  2. Garder les deux noms et utiliser aria-hidden pour retirer le fil d’Ariane de la lecture.
  3. Placer la navigation principale dans un ordre cohérent dans le code source et donner des noms distincts aux régions.
  4. Placer le rôle navigation sur chaque lien et utiliser CSS pour inverser l’ordre visuel.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une boulangerie utilise la même photo de pain sur une page de produit et sur une page de dépannage consacrée aux croûtes trop cuites. Pourquoi leurs alternatives textuelles pourraient-elles différer ?
  1. Un fichier réutilisé doit avoir un rôle d’image différent à chaque fois.
  2. L’information pertinente change selon la fonction de la page.
  3. L’alternative doit lister chaque détail visible aux deux endroits.
  4. Le navigateur génère une nouvelle alternative à partir de chaque titre de page.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Le bouton d’un article du panier ouvre une boîte de dialogue de confirmation native. La confirmation supprime le dernier article et le bouton qui a ouvert la boîte, puis ferme celle-ci. Le titre du panier reste présent mais ne peut normalement pas recevoir le focus. Quel plan préserve le comportement modal et une place utile après la confirmation ?
  1. Ouvrir avec showModal ; compter sur le retour automatique du focus au bouton supprimé.
  2. Ouvrir un calque div ; après fermeture, faire défiler visuellement jusqu’au titre du panier.
  3. Ouvrir avec showModal ; après fermeture, ajouter aria-live au titre du panier sans focus.
  4. Ouvrir avec showModal ; après fermeture, donner le focus au titre du panier avec tabindex moins un.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

L’étiquette blanche de taille normale d’un bouton a un contraste de 1,63:1 sur un fond ambre. Un texte noir sur ce même fond donne 12,88:1. Quel changement direct de couleur respecte le contraste AA du texte ?
  1. Utiliser le noir pour l’étiquette.
  2. Mettre l’étiquette blanche en gras.
  3. Ajouter un nom accessible.
  4. Agrandir la marge intérieure du bouton.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Un lien dans un paragraphe ne se distingue que par sa couleur. Son texte a un contraste de 5,10:1 avec l’arrière-plan, mais seulement de 2,20:1 avec le texte environnant. Il est souligné au survol et au focus. Quelle correction simple résout l’obstacle restant pour identifier le lien ?
  1. Garder le soulignement visible aussi à l’état normal.
  2. Supprimer le soulignement au survol pour uniformiser les états.
  3. Garder l’état normal car le contraste avec le fond est conforme.
  4. Ajouter un aria-label sans modifier la mise en forme visuelle.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Le passage à la caisse oblige le client à saisir de nouveau une adresse de livraison toujours valide pour la facturation, sans raison de sécurité. La connexion bloque le collage du mot de passe sans alternative conforme. Un champ pour l’adresse e-mail d’un ami utilise le jeton autocomplete="email" du client. Quel plan traite les trois problèmes ?
  1. Proposer la réutilisation de l’adresse, bloquer le collage et retirer le jeton inadapté du champ de l’ami.
  2. Garder la nouvelle saisie de l’adresse, autoriser le collage et conserver le jeton du champ de l’ami.
  3. Proposer la réutilisation de l’adresse, autoriser le collage et remplacer le jeton de l’ami par username.
  4. Proposer la réutilisation de l’adresse, autoriser le collage et retirer le jeton inadapté du champ de l’ami.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Quelle valeur ARIA indique qu’un champ a été vérifié et contient une erreur ?
  1. aria-required="false".
  2. aria-invalid="true".
  3. aria-pressed="true".
  4. aria-current="page".
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Trois contrôles ne correspondent pas à leur comportement : un menu ouvert indique expanded false ; « Couper le son » devient « Rétablir le son » tandis que pressed devient true ; un bouton de commande avec aria-disabled envoie toujours la commande. L’équipe souhaite un bouton à bascule « Couper le son » avec état enfoncé et un bouton de commande indisponible pouvant recevoir le focus. Quelle correction convient ?
  1. Annoncer le menu ouvert, garder l’étiquette changeante et bloquer par script les actions de commande indisponibles.
  2. Annoncer le menu ouvert, garder l’étiquette stable et compter sur aria-disabled pour bloquer l’envoi.
  3. Annoncer le menu ouvert, garder l’étiquette stable et bloquer par script les actions de commande indisponibles.
  4. Annoncer le menu ouvert, garder l’étiquette stable et utiliser disabled natif sur le bouton de commande.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un problème de nom manquant est corrigé sur un bouton de commande partagé. Son nom calculé paraît maintenant correct. Quel nouveau test vérifie le mieux à la fois l’échec initial avec le lecteur d’écran et l’action ?
  1. Accepter le nom calculé et répéter uniquement le score automatisé initial.
  2. Reprendre le même parcours avec le lecteur d’écran, écouter le nom et activer le bouton.
  3. Tester uniquement à la souris puisque le nom de l’élément est maintenant présent.
  4. Vérifier une capture du bouton et compter les avertissements restants de l’analyse.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un bouton utilise aria-disabled="true", mais un clic dessus passe toujours une commande. Quel comportement manque si le contrôle doit rester apte à recevoir le focus ?
  1. La valeur ARIA doit être déplacée vers le titre le plus proche.
  2. Le bouton doit aussi recevoir une valeur tabindex positive.
  3. Un nouvel aria-label doit indiquer « Indisponible » au lieu de son action.
  4. Un script doit empêcher son action tant qu’il est indisponible.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 5 : Examine une page par plusieurs moyens d’accès10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un rapport vérifie plusieurs critères de succès AA mais aucun critère de niveau A. Cela peut-il établir la conformité au niveau AA des WCAG 2.2 ?
  1. Oui ; le niveau AA remplace les critères du niveau inférieur.
  2. Oui ; le site est utilisé avec succès par un lecteur d’écran.
  3. Non ; chaque critère AAA doit aussi être respecté.
  4. Non ; tous les critères A et AA doivent être respectés.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Un bouton natif affiche « Rechercher du pain » à côté d’un SVG décoratif masqué. Son aria-label est « Rechercher du pain », mais aria-labelledby pointe vers un titre qui indique « Filtres ». Quel nom est calculé et quelle correction garde le nom visible et le masquage décoratif ?
  1. « Filtres » ; retirer seulement aria-label et garder la référence au titre.
  2. « Filtres » ; retirer les attributs de nom prioritaires et garder le SVG masqué.
  3. « Rechercher du pain » ; garder les deux attributs de nom et révéler le SVG.
  4. « Rechercher du pain » ; retirer seulement la référence au titre et garder le SVG masqué.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un passage à la caisse comporte des arrêts de tabulation inutiles sur les titres, un parcours de focus qui saute entre des champs réordonnés en CSS et un div Envoyer utilisable seulement à la souris. Quel plan corrige les trois problèmes ?
  1. Retirer les arrêts sur les titres, corriger l’ordre du code source et utiliser un bouton d’envoi natif.
  2. Retirer les arrêts sur les titres, garder l’ordre CSS seul et utiliser un bouton d’envoi natif.
  3. Garder les arrêts sur les titres, corriger l’ordre du code source et utiliser un bouton d’envoi natif.
  4. Retirer les arrêts sur les titres, corriger l’ordre du code source et ajouter seulement un rôle et tabindex à Envoyer.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un tout petit lien vers une recette apparaît dans une phrase ordinaire. Sa cible dans le texte doit-elle recevoir une marge intérieure pour atteindre 24 px CSS sur 24 précisément afin de satisfaire au critère 2.5.8 ?
  1. Oui ; le minimum s’applique sans aucune exception.
  2. Non ; le texte du lien est aussi exempté du contraste du texte.
  3. Non ; les liens dans une phrase bénéficient d’une exception.
  4. Oui ; tous les liens exigent 44 px CSS sur 44 au niveau AA.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Supprimer le dernier article du panier efface son bouton Supprimer qui avait le focus. Le focus revient au début de la page ; le titre du panier ne peut normalement pas le recevoir. Quelle correction préserve une place utile sans ajouter un autre arrêt de tabulation habituel ?
  1. Donner au titre un tabindex zéro et lui donner le focus après la suppression.
  2. Donner au titre un tabindex moins un et seulement le faire défiler à l’écran.
  3. Donner au titre un tabindex moins un et lui donner le focus après la suppression.
  4. Laisser le titre sans tabindex et seulement le faire défiler à l’écran.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Avec un zoom à 400 % dans une fenêtre de 1 280 px CSS de large, les paragraphes défilent horizontalement et les consignes de retrait disparaissent. Un large tableau de données défile aussi horizontalement. Quelle correction faut-il apporter au contenu ordinaire tout en respectant l’exception pour le tableau ?
  1. Garder le défilement horizontal des paragraphes et du tableau ; conserver les consignes de retrait.
  2. Redistribuer les paragraphes et conserver les consignes de retrait ; le tableau peut garder deux dimensions.
  3. Redistribuer les paragraphes et conserver le tableau ; retirer les consignes de retrait pour gagner de la place.
  4. Redistribuer les paragraphes et conserver les consignes ; couper la dernière colonne du tableau pour qu’il tienne.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Un champ recueille le numéro de téléphone d’un client, qui peut commencer par un zéro. Quel type de champ convient à ces données sans prétendre en valider le format ?
  1. type="number".
  2. type="email".
  3. type="url".
  4. type="tel".
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un champ obligatoire destiné à l’adresse e-mail de l’utilisateur ne possède qu’un texte indicatif : il n’a ni étiquette, ni jeton de remplissage automatique, ni indication visible de son caractère obligatoire. Quelle correction concise couvre le nom, la fonction et l’obligation ?
  1. Ajouter une étiquette visible associée indiquant l’obligation, required natif et autocomplete email.
  2. Ajouter une étiquette visible associée indiquant l’obligation, required natif et autocomplete username.
  3. Ajouter une étiquette visible associée indiquant l’obligation et autocomplete email, sans attribut required.
  4. Ajouter une étiquette masquée, required natif et autocomplete email ; ne laisser visible que le texte indicatif.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un panneau contient des liens et est masqué visuellement par l’opacité, tandis que son parent possède aria-hidden="true". Le focus clavier atteint toujours ces liens. Quelle correction rend le panneau fermé indisponible par ces deux moyens ?
  1. Utiliser hidden ou display none tant que le panneau est fermé.
  2. Garder l’opacité et déplacer aria-hidden sur chaque lien pouvant recevoir le focus.
  3. Garder le parent masqué aux lecteurs d’écran et nommer à nouveau chaque lien.
  4. Garder le parent inchangé et donner aux liens un rôle de présentation.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Quelle commande VoiceOver sur macOS ouvre le rotor lorsque VO signifie Contrôle+Option ?
  1. VO+Flèche droite.
  2. Cmd+F5.
  3. VO+U.
  4. Maj+Tab.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

87 Mots-Clés, chacun avec sa définition

A

Accessibilité du Web
L’accessibilité du Web est la possibilité pour les personnes en situation de handicap de percevoir, comprendre, parcourir et utiliser un site web avec les outils et réglages auxquels elles ont recours.
Un client peut terminer une commande de boulangerie en ligne au clavier, avec un lecteur d’écran ou avec une vue agrandie.
Alerte à vérifier
Une alerte à vérifier est un résultat d’outil qui nécessite une inspection humaine avant de décider si le contenu signalé crée un obstacle.
Une alerte de titre possible amène l’auteur à vérifier si le paragraphe en gras introduit réellement une section.
Alternative textuelle
L’alternative textuelle d’une image est le texte placé dans son attribut alt, qui communique une information utile ou une fonction en contexte ; les images purement décoratives reçoivent une valeur vide.
L’alternative d’une photo de pain au levain décrit sa croûte, car cette caractéristique compte sur sa page de produit.
Arbre d’accessibilité
Un arbre d’accessibilité est la représentation que le navigateur déduit des objets porteurs de sens d’une page, en exposant leurs rôles, noms, états et propriétés aux technologies d’assistance.
L’arbre montre un bouton natif d’enregistrement comme un bouton nommé « Enregistrer », même lorsque son apparence est personnalisée.
Attribut aria-current
L’attribut aria-current identifie l’élément courant dans un ensemble lié ; la valeur page marque le lien vers la page consultée.
Un site de boulangerie met en forme aria-current="page" afin que le même balisage contrôle la mise en évidence visuelle dans la navigation.
Attribut aria-disabled
L’attribut aria-disabled indique qu’un contrôle est indisponible tout en laissant inchangés sa capacité à recevoir le focus et son comportement d’activation ; un script doit bloquer l’action si elle reste possible.
Un bouton de commande indisponible pouvant recevoir le focus nécessite un script qui bloque son action en plus de l’état désactivé annoncé.
Attribut tabindex
L’attribut tabindex est un attribut HTML qui contrôle le focus : zéro ajoute un arrêt de tabulation dans l’ordre du code source, tandis que moins un permet de donner volontairement le focus sans ajouter d’arrêt à la séquence habituelle.
Le titre du panier utilise tabindex="-1" afin qu’un script puisse lui donner le focus après la suppression du dernier article.
Audiodescription
L’audiodescription est une narration des informations visuelles importantes absentes de la bande-son d’une vidéo, énoncée pendant les pauses ou dans une version audiodécrite séparée.
Une vidéo de boulangerie audiodécrite indique quel réglage apparaît silencieusement sur l’affichage de température du four.
axe-core
Axe-core est un moteur de test d’accessibilité utilisé par des outils comme axe DevTools et par une sélection de vérifications Lighthouse.
Le développeur inspecte un résultat axe pour localiser le contrôle dont la valeur ARIA ne correspond pas au rôle.

B

Boîte de dialogue modale
Une boîte de dialogue modale est une fenêtre d’interaction qui demande l’attention de l’utilisateur tandis que la page environnante est rendue indisponible pour l’interaction.
Une boîte de dialogue des horaires d’ouverture garde Tab à l’intérieur jusqu’à sa fermeture, puis rend le focus au contrôle qui l’a ouverte.
Bouton
Un bouton est un contrôle interactif qui effectue une action et dont la version HTML native prend en charge le focus et l’activation par Entrée ou Espace.
Le bouton « Afficher les filtres » ouvre des choix sur la page de produit courante sans naviguer ailleurs.
Bouton à bascule
Un bouton à bascule est un bouton qui conserve un état activé ou désactivé, généralement représenté par aria-pressed tandis que son étiquette reste stable.
Le bouton à bascule garde « Couper le son » tandis que son état enfoncé indique si la coupure du son est activée.
Bouton de dépliage (disclosure)
Un bouton de dépliage est un contrôle qui affiche ou masque une région associée, avec un état déplié indiquant si son contenu est ouvert.
Le bouton Menu utilise aria-expanded tandis qu’un script ajoute ou retire aussi hidden sur sa liste.

C

Champ obligatoire
Un champ obligatoire est un contrôle de formulaire qui doit être rempli, ce qui est communiqué par une indication visible et l’attribut natif required.
L’étiquette indique « Adresse e-mail (obligatoire) » et le champ porte required pour les vérifications du navigateur.
Changement de contexte
Un changement de contexte est un changement important, comme une navigation ou un déplacement du focus, qui peut perturber la compréhension qu’a l’utilisateur de sa position.
Un sélecteur de destination utilise un bouton Aller afin que le choix d’une valeur n’ouvre pas une autre page de manière inattendue.
Cible du pointeur
Une cible du pointeur est la zone interactive activée par un dispositif de pointage, marge intérieure cliquable comprise ; sa taille se mesure sur cette zone, pas seulement sur l’icône dessinée à l’intérieur.
Une marge intérieure donne à un bouton avec une icône carrée de 16 px une taille de 24 px de côté, augmentant la zone réelle sur laquelle appuyer.
Contraste du contenu non textuel
Le contraste du contenu non textuel est la différence nécessaire pour identifier les contrôles, leurs états ou les graphiques porteurs de sens par rapport aux couleurs adjacentes, exigeant normalement au moins 3:1 au niveau AA.
Une bordure de champ nécessaire pour repérer le champ doit atteindre 3:1 avec l’arrière-plan blanc voisin.
Contrôle natif
Un contrôle natif est un élément d’interface intégré à HTML qui fournit une sémantique standard, un comportement au clavier et les états pertinents.
Un site de boulangerie utilise une case à cocher pour les offres par e-mail, en conservant son interaction attendue avec la touche Espace.
Couleurs forcées
Les couleurs forcées sont un mode d’affichage utilisant une palette limitée choisie par l’utilisateur, qui peut remplacer les arrière-plans et supprimer les ombres ; les indications de focus doivent donc rester utiles malgré ces changements.
Un indicateur de focus fondé sur un contour reste utile dans un thème de contraste Windows après la disparition de l’ombre du bouton.
Critère de succès des WCAG
Un critère de succès des WCAG est une exigence d’accessibilité numérotée, nommée et vérifiable de niveau A, AA ou AAA ; la conformité AA comprend tous les critères A et AA.
Le développeur vérifie le critère 1.4.3 Contraste (minimum) pour déterminer si le texte courant respecte le seuil AA.

D

Déclaration de la zone d’affichage
Une déclaration de la zone d’affichage est une métadonnée HTML qui contrôle la zone d’affichage de mise en page sur mobile, en l’adaptant couramment à la largeur de l’appareil avec une échelle initiale de un.
Un site de boulangerie autorise le zoom par pincement au lieu d’ajouter user-scalable=no à ses métadonnées de zone d’affichage.
Déficience de la vision des couleurs
Une déficience de la vision des couleurs est une différence de perception des couleurs qui peut rendre certaines teintes difficiles à distinguer les unes des autres.
Un site de boulangerie ajoute « Ouvert actuellement » à côté d’un point vert afin que la disponibilité reste claire sans reconnaître le vert.
Description accessible
Une description accessible est un texte complémentaire associé à un objet, comme une aide de champ annoncée après son nom.
L’aide du mot de passe est associée avec aria-describedby, tandis que l’étiquette fournit toujours le nom « Mot de passe ».

É

État ARIA
Un état ARIA décrit la condition actuelle d’un objet et doit rester synchronisé avec les changements de l’interface.
L’ouverture du menu modifie à la fois la visibilité du panneau et l’état déplié du bouton, qui passe à true.
Étiquette dans le nom
L’étiquette dans le nom est l’exigence selon laquelle le nom accessible d’un contrôle doit inclure son texte visible afin que les utilisateurs puissent l’actionner avec ces mots.
Un bouton Confirmer la commande garde « Confirmer la commande » dans son nom calculé pour les clients utilisant une commande vocale.
Étiquette de champ
Une étiquette de champ est un texte associé à un contrôle qui identifie sa fonction et fournit normalement son nom accessible ; une association HTML correcte permet aussi de donner le focus au contrôle en cliquant sur l’étiquette.
Cliquer sur « Adresse e-mail » donne le focus au champ correspondant parce que la valeur for de l’étiquette correspond à son identifiant.

F

Focus clavier
Le focus clavier est la position d’interaction courante dans une page, qui identifie l’élément recevant les saisies clavier pertinentes.
Après que Tab a atteint « Ajouter au panier », appuyer sur Espace active ce bouton ayant le focus plutôt qu’un autre élément.

G

Gestion du focus
La gestion du focus consiste à placer volontairement le focus clavier après un changement d’interface, comme la fermeture d’une boîte de dialogue ou la suppression d’un article, afin de préserver une position adaptée à la tâche.
Après la suppression d’un article, la page donne le focus au bouton Supprimer suivant au lieu de revenir au début de la page.
Groupe de champs
Un groupe de champs est un conteneur HTML qui regroupe des contrôles de formulaire liés afin que leur question commune puisse être fournie par une légende.
Les boutons radio de retrait et de livraison par coursier se trouvent dans un même groupe de champs pour la question sur le mode de livraison.

H

Hiérarchie des titres
La hiérarchie des titres est le plan exprimé par les niveaux de titre, qui relie le sujet d’une page à ses sections et sous-sections imbriquées indépendamment de leur taille de police visuelle.
« Parfums » est un h2, avec « Chocolat » et « Citron » comme sous-sections h3 à l’intérieur de cette section.
HTML sémantique
Le HTML sémantique est un balisage choisi selon le sens et la fonction du contenu, dont la présentation est gérée séparément avec CSS.
Un site de boulangerie utilise un vrai titre pour « Horaires d’ouverture » afin qu’il apparaisse dans la navigation par titres d’un lecteur d’écran.

I

Identification des erreurs
L’identification des erreurs consiste à indiquer par écrit à l’utilisateur quel problème de saisie a été détecté, afin que l’échec soit compréhensible sans la couleur.
Le formulaire indique « Erreur : saisis une adresse e-mail » à côté du champ e-mail en erreur et conserve les autres saisies.
Image complexe
Une image complexe est un graphique dont les informations détaillées dépassent ce que peut contenir une alternative textuelle concise et qui nécessite donc une explication ou des données équivalentes à proximité, ainsi qu’une courte identification.
Un graphique des visiteurs possède une courte alternative, accompagnée à proximité d’un texte sur la tendance et d’un tableau des valeurs mensuelles.
Image de texte
Une image de texte est une image contenant des mots qui pourraient souvent être fournis sous forme de vrai texte, plus facile à redimensionner et à redistribuer.
Une bannière de soldes est remplacée par du texte HTML afin que « 20 % de réduction sur tous les pains » reste clair lorsqu’il est agrandi.
Image décorative
Une image décorative ajoute un aspect visuel sans apporter d’information ni de fonction ; un élément img doit donc avoir un alt vide.
Une bordure à motif de farine utilise alt="" afin de ne pas interrompre la lecture à voix haute de la recette.
Image fonctionnelle
Une image fonctionnelle représente une action ou une destination dans le contenu d’un contrôle ; son alternative nomme donc cette fonction au lieu de décrire seulement l’apparence de l’image.
Un logo qui constitue à lui seul le lien vers l’accueil possède l’alternative « Accueil de la boulangerie Green Leaf ».
Indicateur de focus
Un indicateur de focus est une indication visible qui identifie l’élément ayant le focus clavier et aide à repérer quel contrôle sera actionné par la prochaine touche d’activation.
Un site de boulangerie garde un contour bleu pour que les clients voient quel contrôle sera activé par le prochain appui sur Entrée.
Indication donnée uniquement par la couleur
Une indication donnée uniquement par la couleur communique une distinction par la seule teinte, rendant son sens inaccessible lorsque cette couleur ne peut pas être reconnue.
Une bordure rouge sans texte d’erreur laisse le client deviner quel champ corriger et pourquoi.
Indication indépendante de la couleur
Une indication indépendante de la couleur transmet une distinction par des mots, une forme, un motif ou une autre caractéristique qui ne nécessite pas d’identifier une teinte.
Les lignes pointillées et continues d’un graphique permettent de distinguer ses séries même dans une vue en niveaux de gris.
Inspection de l’accessibilité
L’inspection de l’accessibilité consiste à examiner les rôles, noms et états calculés dans les outils du navigateur afin de retrouver l’origine des informations communiquées par la page.
Le panneau Accessibilité montre qu’un attribut de nom prioritaire masqué, et non le texte visible du bouton, fournit son nom.

J

Jeton de remplissage automatique
Un jeton de remplissage automatique est une valeur d’attribut normalisée qui identifie la fonction de saisie pour le remplissage automatique du navigateur, les gestionnaires de mots de passe et les outils d’assistance.
Le champ de mot de passe existant utilise autocomplete="current-password" afin qu’un gestionnaire de mots de passe puisse le reconnaître.

L

Langue de la page
La langue de la page est la langue principale déclarée sur l’élément HTML racine, qui aide les technologies d’assistance à utiliser une prononciation adaptée.
Une page de boulangerie en anglais définit lang="en-US", tandis qu’un court passage en français possède son propre attribut de langue.
Légende
Une légende est le court texte de groupe placé dans un groupe de champs, qui donne aux options liées le contexte de la question à laquelle elles répondent.
« Mode de livraison » est annoncé avec les choix radio, tandis que chaque option possède aussi sa propre étiquette.
Lien
Un lien est un élément de navigation qui mène un utilisateur à une page, un fichier ou un endroit, normalement exprimé comme une ancre avec href.
Le texte « Informations de livraison » mène à une page de la boulangerie qui explique sa zone et ses horaires de livraison.
Lien d’évitement
Un lien d’évitement est un lien accessible au clavier qui permet de passer le contenu répété d’une page et de se déplacer vers le contenu principal.
La première tabulation révèle « Aller au contenu principal », ce qui permet au client d’éviter tout le menu de l’en-tête.
Liste de descriptions
Une liste de descriptions est une liste HTML de termes ou de noms associés à des descriptions, exprimée avec les éléments dl, dt et dd.
Le glossaire d’une boulangerie associe chaque nom de pain à son explication dans une liste de descriptions.
Luminance relative
La luminance relative est une mesure calculée du niveau de luminosité d’une couleur, avec le noir à 0 et le blanc à 1 dans les calculs de contraste des WCAG.
La formule du contraste place la luminance la plus claire plus 0,05 au-dessus de la luminance la plus foncée plus 0,05.

M

Masquage du focus
Le masquage du focus se produit lorsqu’un autre contenu couvre le composant qui reçoit le focus, rendant la position courante au clavier difficile à voir.
Une bannière adhérente couvre entièrement le bouton de commande : son défilement et son placement doivent donc être corrigés.
Message d’état
Un message d’état est une information sur une action ou un état qui doit être disponible pour les technologies d’assistance sans prendre le focus.
« 1 pain ajouté à ton panier » est annoncé poliment tandis que le client reste sur le bouton Ajouter.

N

Nom accessible
Un nom accessible est le texte calculé qui identifie un objet, déduit de sources de nom prises en charge comme une étiquette ou le texte d’un bouton.
Le développeur examine pourquoi un aria-label a remplacé les mots visibles du bouton Annuler dans son nom annoncé.
Nouveau test après correction
Un nouveau test après correction consiste à répéter le parcours d’accès qui échouait auparavant afin de vérifier que l’obstacle initial est résolu.
Après la correction d’une étiquette, la personne qui teste donne le focus au même champ avec le lecteur d’écran qui a d’abord révélé le nom manquant.

O

Obstacle bloquant
Un obstacle bloquant empêche un utilisateur de terminer une activité et doit être traité en priorité dans les corrections d’accessibilité.
Un piège au clavier lors du passage à la caisse est corrigé avant un problème mineur de présentation qui n’empêche pas de commander.
Ordre dans le code source
L’ordre dans le code source est la séquence des éléments dans le document HTML qui détermine normalement l’ordre de lecture et de focus, même lorsque CSS déplace ces éléments.
Un lien de connexion déplacé visuellement par l’ordre Flexbox reçoit toujours le focus à sa place d’origine dans le HTML.
Ordre de tabulation
L’ordre de tabulation est la séquence des éléments pouvant recevoir le focus atteints par Tab ou Maj+Tab, normalement fondée sur un ordre cohérent du document.
Dans le formulaire de commande, le focus atteint les coordonnées avant les choix de livraison, dans le même ordre que leur affichage.

P

Personnalisation de l’espacement du texte
Une personnalisation de l’espacement du texte est un style utilisateur qui augmente l’espacement des lignes, des paragraphes, des lettres ou des mots, et que le contenu doit tolérer sans perte.
Le test révèle une carte à hauteur fixe qui coupe sa dernière ligne lorsque l’espacement des paragraphes augmente.
Piège au clavier
Un piège au clavier est un composant dans lequel les utilisateurs peuvent entrer au clavier mais dont ils ne peuvent pas sortir par un moyen disponible au clavier.
Une carte intégrée échoue au test lorsque Tab y entre mais qu’aucune action au clavier ne permet au client de poursuivre.
Portée de l’en-tête
La portée de l’en-tête est la relation déclarée d’un en-tête de tableau avec les cellules de sa ligne ou de sa colonne, qui permet au navigateur d’associer une valeur aux en-têtes expliquant son sens.
Un en-tête Samedi possède scope="row" afin que son nom soit associé aux heures d’ouverture et de fermeture de cette ligne.
Prévention des erreurs
La prévention des erreurs protège les envois ayant des conséquences grâce à la possibilité d’annuler, à une vérification avec correction, ou à un examen et une confirmation avec correction, au lieu de seulement signaler une erreur après coup.
Avant de passer la commande, le client peut vérifier les quantités et modifier une adresse de livraison erronée.
Pseudo-classe :focus-visible
La pseudo-classe :focus-visible est une pseudo-classe CSS qui s’applique lorsque le navigateur juge que le focus doit être indiqué visiblement à l’utilisateur.
La feuille de style utilise :focus-visible pour afficher un contour bien visible au clavier, tandis que les clics ordinaires de souris sur les boutons peuvent ne pas en afficher.

R

Rapport de contraste
Un rapport de contraste compare la luminance relative de deux couleurs sur une échelle de 1:1 à 21:1 ; le minimum exigé dépend de l’utilisation de la paire pour du texte normal, du texte de grande taille ou une information non textuelle.
Un outil indique 4,48:1 pour un texte gris sur blanc, ce qui est inférieur au minimum AA pour le texte normal.
Récapitulatif des erreurs
Un récapitulatif des erreurs est un rapport regroupé des échecs d’un formulaire, qui reçoit généralement le focus après l’envoi et contient des liens vers les contrôles concernés.
Le titre « Il y a 2 problèmes dans ta commande » introduit des liens qui mènent aux champs en erreur.
Redistribution
La redistribution est la réorganisation du contenu pour une vue étroite sans perte d’information ni nécessité de faire défiler le texte ordinaire dans deux directions ; certains contenus bidimensionnels bénéficient d’exceptions.
La navigation s’empile au-dessus du formulaire de commande au lieu de disparaître lorsque la largeur disponible diminue.
Région dynamique
Une région dynamique est une région de page dont le contenu modifié peut être annoncé par les technologies d’assistance sans déplacer le focus clavier.
Un paragraphe d’état du panier initialement vide reçoit un nouveau texte après que l’utilisateur a appuyé sur un bouton Ajouter.
Région inerte
Une région inerte est un contenu rendu indisponible pour l’interaction, empêchant ses descendants d’agir comme des contrôles actifs ; l’ouverture modale native rend la page en arrière-plan inerte.
Une boîte de dialogue modale ouverte avec showModal() rend la page en arrière-plan inerte tant qu’elle est active.
Région repère
Une région repère est une région de page identifiée dans le code que les technologies d’assistance peuvent utiliser comme destination de navigation, comme le contenu principal ou une région de navigation nommée.
Une personne utilisant un lecteur d’écran passe directement au contenu principal d’un site de boulangerie au lieu de relire son en-tête.
rem
Le rem est une unité de longueur CSS relative à la taille de police de l’élément racine, qui permet aux tailles de texte de suivre ce réglage de base.
Le texte du corps en 1rem grandit lorsque l’utilisateur augmente la taille de police par défaut du navigateur.
Rôle
Un rôle est le type sémantique communiqué pour un objet dans l’arbre d’accessibilité, qui exprime ce que les utilisateurs doivent s’attendre à trouver.
Un rôle de bouton promet un contrôle actionnable, mais attribuer ce rôle à un div n’implémente pas ses touches.
Rôle de présentation
Un rôle de présentation retire la sémantique d’un élément tout en laissant son contenu disponible ; les navigateurs l’ignorent sur les éléments pouvant recevoir le focus, il ne peut donc pas désactiver un lien actif.
Ajouter role="presentation" ne peut pas transformer de manière fiable un lien actif en texte ordinaire ni masquer son contenu.
Rotor
Le rotor est un outil de navigation de VoiceOver qui permet de choisir des catégories comme les titres, les liens, les régions repères et les contrôles de formulaire.
Sur macOS, VO+U ouvre le rotor afin que la personne qui teste puisse inspecter les titres accessibles sur la page.

S

Saisie redondante
La saisie redondante consiste à demander une information déjà saisie dans le même processus alors qu’elle pourrait être réutilisée ou sélectionnée.
Une case de facturation réutilise l’adresse de livraison, sauf si une exception valide exige que le client la saisisse de nouveau.
Seuil de contraste
Un seuil de contraste est un rapport minimal exact pour la catégorie de contenu concernée ; arrondir l’affichage ne peut pas rendre conforme un rapport inférieur.
Une valeur de 2,99:1 ne satisfait pas à une exigence de 3:1, même si un affichage à une décimale indique 3,0.
Sous-titres
Les sous-titres sont une transcription ou une traduction synchronisée des dialogues destinée aux personnes qui entendent le son mais ont besoin d’aide pour le comprendre.
Une personne utilise des sous-titres traduits pour un entretien, mais a toujours besoin de sous-titres pour sourds et malentendants afin de recevoir les indications sonores importantes.
Sous-titres pour sourds et malentendants
Les sous-titres pour sourds et malentendants sont un texte synchronisé qui transmet les paroles, les sons importants et l’identification nécessaire des personnes qui parlent pendant la lecture d’une vidéo, rendant les informations sonores disponibles visuellement.
Les sous-titres d’une vidéo de boulangerie indiquent une alarme de minuterie ainsi que les consignes orales du formateur.
Suggestion de correction d’erreur
Une suggestion de correction d’erreur est une correction connue et utile proposée après un échec de saisie détecté lorsque la sécurité et l’objectif du formulaire le permettent.
Le message donne l’exemple « nom@exemple.com » au lieu de s’arrêter à la formulation peu utile « Saisie invalide ».
SVG
SVG est un format de graphiques vectoriels dont les graphiques intégrés au code et porteurs de sens nécessitent un rôle adapté et un nom accessible.
Un graphique de note intégré au code utilise role="img" et un titre indiquant « Note de 4 étoiles sur 5 ».

T

Technologie d’assistance
Une technologie d’assistance est un outil qui aide une personne à utiliser du contenu numérique, comme un lecteur d’écran, une loupe ou un contacteur.
La commande vocale permet à un client de dire « cliquer sur Rechercher » pour actionner un contrôle dont le nom correspond à son étiquette.
Test manuel d’accessibilité
Un test manuel d’accessibilité repose sur l’utilisation et le jugement humains pour évaluer le sens et le comportement que les règles automatisées ne peuvent pas apprécier entièrement.
La personne qui teste passe une commande au clavier et vérifie où revient le focus après la fermeture de la boîte de dialogue de vérification.
Texte de grande taille
Pour le contraste des WCAG, un texte de grande taille mesure au moins 24 px CSS en graisse normale ou environ 18,7 px CSS en gras et bénéficie d’un seuil de 3:1 au niveau AA ; être un titre ne suffit pas à établir cette taille.
Un titre de 22 px en graisse normale reste soumis au minimum de 4,5:1 du texte normal, malgré son rôle de titre.
Texte indicatif
Un texte indicatif est une aide affichée dans un champ vide, qui disparaît pendant la saisie et ne fournit pas d’étiquette visible permanente.
L’exemple d’adresse reste dans une aide à proximité afin de demeurer disponible après que le client a commencé à saisir du texte.
Texte masqué visuellement
Le texte masqué visuellement est un texte caché à l’affichage ordinaire par CSS tout en restant dans l’arbre d’accessibilité, contrairement au texte retiré avec display none ou visibility hidden.
Un bouton de suppression compact garde les mots « Supprimer l’article » accessibles aux lecteurs d’écran sans les afficher.
Titre de la page
Le titre de la page est le texte de l’élément HTML title qui identifie une page dans les onglets du navigateur, les favoris et les annonces des lecteurs d’écran.
Sur un site de boulangerie, le titre « Choisir un gâteau - Boulangerie Green Leaf » distingue l’onglet de commande de celui des horaires d’ouverture.
Titre du tableau
Le titre du tableau est le texte de l’élément HTML caption qui identifie le sujet ou la fonction d’un tableau de données.
« Horaires d’ouverture de la boutique » nomme le tableau avant que la personne qui écoute parcoure ses cellules de jours et d’heures.
Transcription textuelle
Une transcription textuelle est un compte rendu écrit séparé d’un enregistrement audio, qui rend les informations orales disponibles sans écouter l’enregistrement.
Un podcast de boulangerie propose une transcription textuelle lisible à côté de son lecteur audio pour les personnes qui ne peuvent pas l’entendre.

V

Vérification automatisée de l’accessibilité
Une vérification automatisée de l’accessibilité applique des règles vérifiables par logiciel à un état affiché de la page ; elle peut trouver des échecs détectables mais ne peut pas trancher les questions de sens ni toutes les exigences d’interaction.
Une analyse automatisée trouve un champ de lettre d’information sans étiquette, mais une personne doit encore juger si les alternatives aux images sont utiles.

W

WAI-ARIA
WAI-ARIA est une spécification du W3C composée de rôles, d’états et de propriétés qui ajoutent ou modifient des informations communiquées aux technologies d’assistance.
Le bouton de dépliage utilise ARIA pour son état déplié, tandis qu’un bouton natif fournit l’activation au clavier.
WebVTT
WebVTT est un format de piste de texte qui associe des temps de repère à du texte, permettant aux sous-titres d’apparaître aux moments appropriés de la lecture.
Un fichier de sous-titres en anglais fournit un repère synchronisé pour le bruit d’un batteur avant la réplique suivante.

Z

Zoom du navigateur
Le zoom du navigateur agrandit ou réduit la page affichée, modifiant l’espace effectif de mise en page ainsi que la taille de son contenu.
Avec un zoom à 400 %, une fenêtre de 1 280 px CSS de large fournit une largeur effective de contenu de 320 px CSS.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer