Des composants accessibles prêts à l'emploi : le livre a11y le plus récent et le plus pratique.
Pourquoi ce livre
La plupart des livres sur l'accessibilité commencent par essayer de vous convaincre qu'elle compte. Celui-ci, non. Dès la préface, Jeremy Keith le dit franchement : « ce n'est pas ce livre-là ». Matuzović part du principe que vous êtes déjà d'accord, et vous tend un guide pratique à la place : plus de 70 recettes pour les problèmes que vous rencontrez vraiment.
J'anime un cours d'accessibilité sur ce site : je l'ai donc ouvert d'un œil méfiant. Il tient la route. Mieux : Keith le présente comme « l'un des meilleurs tutoriels HTML que vous lirez jamais », et c'est exact. On vient pour les recettes d'accessibilité, on repart en ayant enfin compris le HTML lui-même, parce qu'une bonne accessibilité n'est rien d'autre que du bon HTML.
Les idées qui restent
1Tout élément a un nom, un rôle, un état
Le livre est un vrai livre de cuisine (treize chapitres de recettes autonomes), mais sous les recettes il y a un modèle mental unique, et c'est lui qu'il faut emporter. Une personne aveugle ne voit pas votre bouton ; son lecteur d'écran le lui annonce, en trois informations : un nom (le texte lu), un rôle (quel genre de chose c'est) et un état (coché, ouvert, désactivé…).
<button aria-pressed="true">Favori</button>
<!-- annoncé : "Favori, bouton, activé" -->
<!-- ^nom ^rôle ^état -->
Toute l'accessibilité tient dans cette boucle : à chaque composant, demandez-vous « son nom, son rôle et son état sont-ils corrects et annoncés ? ». Un <div> cliquable n'a ni rôle ni état : pour le lecteur d'écran, il n'existe pas. C'est pour ça que la première règle (idée 2) est d'utiliser le bon élément HTML, qui fournit ces trois informations gratuitement. Et comme le dit la préface, l'accessibilité « ne fait pas qu'effleurer les disciplines du web, elle les relie » : la recette de l'un est souvent celle de tous.
2La première règle d'ARIA : ne pas utiliser ARIA
La colonne vertébrale de tout le livre : prenez d'abord l'élément HTML natif, et n'ajoutez ARIA que si aucun élément ne fait le travail. Un vrai <button> arrive avec un rôle, le support clavier et le focus ; un <div role="button"> vous oblige à tout reconstruire à la main, et le WebAIM Million a trouvé que 27,5 % des sites le ratent.
Tout élément interactif a besoin de deux choses sur lesquelles le livre revient sans cesse : un rôle (quel genre d'élément c'est) et un nom accessible (le texte que le lecteur d'écran annonce). Réussissez ça en HTML simple, et l'essentiel de l'accessibilité est déjà fait.
3Ça t'emmène ailleurs ? Lien. Ça fait quelque chose ? Bouton.
La règle la plus utile du front-end, et Matuzović en fait un test : si ça navigue, <a> ; si ça déclenche une action, <button>. Les deux se ressemblent et ne se comportent en rien pareil : un lien se suit, un bouton se presse, et les lecteurs d'écran les annoncent différemment.
Et quel que soit votre choix, ne supprimez jamais l'outline de focus sans le remplacer, et nommez l'élément pour ce qu'il est : une image-lien décrit sa destination, un bouton-icône décrit son action, jamais l'image.
4Respecter les réglages de l'utilisateur, pas les écraser
Les navigateurs et les systèmes exposent déjà ce dont les gens ont besoin :
- le mode sombre (
prefers-color-scheme) ; - le mouvement réduit (
prefers-reduced-motion) ; - le contraste accru et les couleurs forcées ;
- une police de base plus grande.
Le chapitre CSS est un long plaidoyer : ignorer ces signaux n'est pas neutre, c'est un manque de respect.
Le détail qui reste : la media query s'appelle prefers-reduced-motion, « et pas prefers-no-motion, pour une raison » (ch. 5). Le but est de couper le mouvement gratuit, pas de tuer toute animation. Et le CSS peut casser le sens en silence : list-style: none peut retirer la sémantique de liste dans Safari, obligeant parfois à remettre role="list".
5Le focus, c'est le curseur de ceux qui n'ont pas de souris
Pour les utilisateurs au clavier et au lecteur d'écran, l'anneau de focus EST le pointeur. La formule de Matuzović est sans détour : « supprimer les indicateurs de focus pour les utilisateurs clavier, c'est comme cacher le curseur pour les utilisateurs souris » (ch. 6). On ne supprime donc jamais l'outline ; on le stylise, idéalement avec :focus-visible, et on le garde visible en mode Forced Colors grâce à l'astuce de l'outline transparent.
Deux règles ferment le chapitre. L'ordre de lecture suit le DOM : réordonner en CSS avec order ou flex-direction désynchronise le vu et le lu. Et pour les modales, préférez le <dialog> natif ou l'attribut inert à un piège à focus fait maison.
6Cacher du contenu : cinq méthodes, des effets opposés
« Caché » ne veut pas dire une seule chose. Cacher visuellement n'est pas cacher au lecteur d'écran, et on confond les deux avec des résultats douloureux. Le livre met les compromis côte à côte.
Pour le cas courant (une section qu'on déplie), le <details> natif fonctionne sans une ligne de JavaScript ; le chapitre le pèse honnêtement contre un disclosure widget maison quand on veut un comportement cohérent d'un navigateur à l'autre.
7La moitié des champs de formulaire du web n'ont pas d'étiquette
Le chiffre qui cadre le chapitre : selon le WebAIM Million 2023, « 45,9 % des sites testés contenaient des champs de formulaire sans étiquette » (ch. 9), comprenez sans <label>, l'élément HTML qui nomme un champ. Une étiquette visible, reliée à son champ par for/id, est le seul non-négociable ; tout le reste (indications, messages d'erreur, regroupement) ne fait que réduire l'effort par-dessus.
Les recettes sont celles qu'on réutilise à vie :
<fieldset>+<legend>pour les groupes de boutons radio et de cases ;aria-describedbypour les indications et les messages d'erreur ;- un résumé d'erreurs en haut qui prend le focus à la soumission.
Le placeholder en guise d'étiquette, rappelle le livre, est un anti-pattern : il disparaît dès qu'on tape.
8Les tests automatiques sont un filet, pas un certificat
Le dernier chapitre est une douche froide. Les outils comme axe, Lighthouse et WAVE attrapent les erreurs mécaniques, mais pas le sens. La différence est nette :
<img src="chart.png"> <!-- axe LE VOIT : alt manquant, erreur -->
<img src="chart.png" alt="image"> <!-- axe NE VOIT RIEN : alt présent…
mais "image" ne dit rien d'utile -->
« Un score parfait ne veut pas dire que votre site est accessible » (ch. 13) : l'outil vérifie qu'un alt existe, jamais qu'il décrit vraiment l'image. C'est un filet de départ, pas une ligne d'arrivée. L'avertissement le plus moderne concerne les web components : l'encapsulation du Shadow DOM casse les références par ID, donc une étiquette dans le light DOM ne peut pas pointer vers un champ dans le shadow DOM. Pire, plusieurs auditeurs populaires ne voient rien du tout à l'intérieur d'un shadow root. Construisez des composants accessibles, puis testez-les avec un vrai lecteur d'écran.
L'avertissement le plus moderne concerne les web components : l'encapsulation du Shadow DOM casse les références par ID, donc une étiquette dans le light DOM ne peut pas pointer vers un champ dans le shadow DOM. Pire, plusieurs auditeurs populaires ne voient rien du tout à l'intérieur d'un shadow root. Construisez des composants accessibles, puis testez-les avec un vrai lecteur d'écran.
Trois choses que je ne savais pas
- Le livre est la version imprimée d'une « Early Release » sortie en six itérations entre 2023 et 2024 : Matuzović l'a écrit en public, affinant ses recettes release après release avant la 1re édition de septembre 2024.
- Chaque comportement de lecteur d'écran dans le livre vient de vrais tests menés par l'auteur lui-même (NVDA, JAWS, VoiceOver, TalkBack, Narrator), tous datés début 2024 : on voit exactement où le support est inégal au lieu de croire une spec.
- C'est aussi, en creux, un who's-who de l'accessibilité web : Adrian Roselli, Heydon Pickering, Sara Soueidan, Léonie Watson, Steve Faulkner, Alice Boxhall. Les recettes sont sourcées, donc chacune est une porte vers un terrier plus profond.
Mon avis, honnêtement
C'est le livre d'accessibilité que je mettrais aujourd'hui entre les mains d'un développeur front-end en poste. Il ne moralise jamais, ne remplit jamais, et mérite le compliment de Keith : enseigner l'accessibilité aussi concrètement oblige à enseigner le HTML pour de vrai, et c'est précisément ce qui nous manque à la plupart. Les recettes sont copiables telles quelles et, plus rare, honnêtes sur leurs compromis : plus d'une fois, la réponse est « il n'y a pas de solution parfaite, voici les options, testez avec des utilisateurs ».
Les réserves tiennent surtout au format. En cookbook, c'est une référence où l'on pioche, pas une histoire qu'on retient ; lu d'un bout à l'autre, le « utilisez d'abord le HTML natif » qui revient peut sembler répétitif (il est répété parce qu'il est vrai). Et les parties les plus précieuses (les tableaux de support des lecteurs d'écran, datés) sont aussi les plus périssables : dans deux ans, certaines lignes seront fausses. Prenez les principes comme permanents et re-vérifiez les tableaux.
En 2026, il a un second métier qu'il n'avait pas prévu : relire le markup généré par IA. Les modèles produisent volontiers de la soupe de <div> avec de l'ARIA plaqué dessus, exactement le défaut que ce livre apprend à repérer et refuser. À lire à côté du soin de la ligne de Clean Code et de la structure d'Ousterhout ; celui-ci occupe la couche du milieu, le HTML que l'utilisateur touche vraiment.
Odilon
Toujours valable en 2026 ?
Très. C'est un livre de 2024 qui s'appuie déjà sur le CSS moderne (:has(), :focus-visible, inert, l'animation de grid-template-rows) : les techniques sont d'actualité, pas datées. La seule partie à lire avec une date en tête, ce sont les tableaux de support des lecteurs d'écran (début 2024) et l'histoire encore mouvante d'ARIA dans les web components. Les principes, HTML sémantique et première règle d'ARIA, n'expirent pas.
Pour qui ?
Lisez-le si
- Vous écrivez du HTML/CSS/JS et voulez des composants accessibles sans six mois de cours d'abord
- Vous dégainez
roleetaria-*avant de vérifier qu'un élément natif existe - Vous relisez du markup généré par IA et voulez une grille pour le juger
- Vous voulez une seule référence d'étagère pour liens, boutons, formulaires, focus, tables et composants
Passez si
- Vous cherchez le plaidoyer « pourquoi l'accessibilité compte » : ce livre le saute volontairement
- Vous n'écrivez pas de front-end : c'est du HTML/CSS/JS concret, pas de la stratégie
- Vous attendez un cours linéaire : c'est un livre de recettes, à picorer
Pour aller plus loin
Le cours d'accessibilité de ce site pratique exactement ces fondations (HTML sémantique, focus, formulaires), et le cours HTML pose les bases que le livre suppose acquises. Le code de chaque recette vit sur accessibility-cookbook.com. Dans cette bibliothèque, Clean Code et A Philosophy of Software Design sont ses compagnons naturels sur l'art d'écrire du code réellement utilisable.
Commentaires (0)