Disponibilité UX et interfaces pour tous
1) Pourquoi est-ce important
Légalement et éthique : l'interface ne doit pas exclure les personnes ayant une déficience visuelle, auditive, motrice, cognitive.
Effet d'entreprise : plus d'utilisateurs, plus de conversion et de rétention, meilleur SEO et qualité de code.
Opérationnel : la disponibilité est un processus, pas un « fix aléatoire ».
2) Bases et principes (POUR)
Perceivable : Contraste, textes alternatifs, sous-titres.
Opération : tout est accessible à partir du clavier, le focus visible, pause/stop animations.
Understandable (Compréhensibilité) : navigation prévisible, erreurs claires, formulation simple.
Robust (Fiabilité) : sémantique HTML/ARIA correcte, compatible avec les technologies d'assistance.
3) Sémantique, titres et ARIA
Le marquage sémantique est avant ARIA : '<button>', '<nav>', '<form>', '<table>'.
Hiérarchie des titres : un '<h1>' par page, puis structure logique '<h2>' - '<h3>'.
Landmarks : '<header>', '<main>', '<aside>', '<footer>', '<nav>' - aident les lecteurs d'écran.
ARIA seulement en cas de nécessité : ' role ', ' aria-label ', ' aria-describedby ', ' aria-expanded ', ' aria-live '.
États/erreurs via 'aria-invalid', 'aria-errormessage'.
4) Clavier et gestion de focus
Contrôle complet du clavier : « Tab/Shift + Tab » - Ordre, « Enter/Space » - Activer, « Esc » - Sortie.
Le focus visible est toujours ; ne pas éteindre l'outline.
Pièges de mise au point : dans les modalles - mise au point cyclique, retour de la mise au point à la source après la fermeture.
Les éléments cachés ne doivent pas tomber dans l'ordre d'affichage ('display : none', 'aria-hidden =' true ').
Liens de skip : « Aller au contenu principal » - au début de la page.
5) Couleur, contraste et typographie
Contraste du texte : au moins 4. 5:1 pour le texte ordinaire et 3:1 pour le gros.
Ne comptez pas uniquement sur la couleur : dupliquez l'icône/modèle/signature.
Taille des cibles cliquables : minimum 40-48 px, champs suffisants autour.
Polices : casques lisibles, interligne 1. 4–1. 6, longueur de la ligne 45-90 caractères.
6) Mouvement, animations et flash épileptogène
Respectez l'indicateur système prefers-reduced-motion - ajoutez des animations simplifiées/désactivez la parallaxe.
Évitez les scintillement> 3 fois/s.
Tous les mouvements automobiles doivent avoir une Pause/Stop/Hide.
7) Formes, erreurs et validation
Liez explicitement les étiquettes et les champs : '<label for = "id'>'.
Le placholder n'est pas une marque.
Messages d'erreur à côté du champ et dans le résumé des erreurs en haut ; relier via 'aria-describedby'.
Expliquez le format d'entrée, l'exemple, le masque ; indiquer les unités et la monnaie.
Ne réinitialisez pas les champs remplis en cas d'erreur ; Restez concentré sur le champ problématique.
html
<label for="email">Эл. почта</label>
<input id="email" name="email" type="email" aria-describedby="email-hint email-err">
<div id="email-hint" class="hint">Мы не рассылаем спам</div>
<div id="email-err" class="error" role="alert">Укажите адрес в формате name@example.com</div>
8) Composants et p.ru : modèles
Boutons de référence vs : action = '<button>', transition = '<a>'.
Tabs/accordéons : flèches de navigation, 'aria-controls', 'aria-selected'.
Modalles/dialogues : 'role =' bou ',' aria-modal = 'true', piège à focus, 'Esc' ferme.
Tooltip/Popover : disponibilité par clavier, les temporisateurs n'interfèrent pas avec la lecture.
Drag & Drop : alternatives - boutons « déplacer vers le haut/vers le bas », flèches de clavier ; les événements ne sont pas seulement une souris.
9) Médias : Vidéo/audio/graphique
Vidéo : sous-titres, décryptage (transcript), piste alternative de description audio (AD).
Audio : décryptage de texte.
Graphiques/diagrammes : résumé textuel (« ce qui compte »), tableau de données, signatures descriptives des axes.
Zones vivantes : 'aria-live = « polite « / » assertive »- attention à ne pas« crier » trop souvent.
10) Tableaux et listes
11) i18n, local et RTL
L'attribut « lang » sur la racine html ; formats locaux de nombres/dates/monnaies.
RTL support (arabe/hébreu) : mise en miroir des icônes, ordre de navigation, curseurs.
Évitez les mots dans les icônes (le texte doit être traduisible).
Formulation simple, éviter le jargon ; glossaire des termes.
12) Temps, sessions, captches et alternatives
Taimauts - avec avertissement et possibilité de prolongation.
CAPTCHA : Préférer les alternatives (questions, analyseurs de bots invisibles, confirmation par courrier/téléphone) ; si vous utilisez - une alternative textuelle et pas seulement visuelle.
Authentification : support des gestionnaires de mot de passe, « afficher le mot de passe », WebAuthn.
13) Accessibilité pour les troubles sensoriels et moteurs
Les gestes doivent avoir l'équivalent d'un clic/clavier.
Ne nécessitez pas de rétention prolongée/double tapes sans alternative.
« Punter cancellation » : l'action doit être effectuée sur le relâchement, pas sur le « pressing » pour donner une chance d'annuler.
14) États, notifications et alertes
Utilisez 'role =' status '/' alert 'pour les messages dynamiques.
Ne chevauchez pas le focus avec des bannières « collantes ».
Notifications Toast - avec pause au focus/hover et accès au clavier.
15) Plan d'essai (manuel et auto)
Manuel (minimum) :- Parcourir tous les scripts clés uniquement avec le clavier.
- Vérifiez la visibilité du focus sur chaque élément.
- Zoom jusqu'à 200 % - l'interface reste fonctionnelle sans scroll horizontal.
- Activer le mode système « réduction de mouvement » : les interpolations ne sont pas gênantes.
- Passez le script avec le lecteur d'écran (NVDA/VoiceOver), assurez-vous que les rôles/étiquettes/ordre corrects.
- Lentilles de disponibilité au niveau des composants.
- Vérification du contraste, des textes alternatifs, de l'ordre des titres, de la validation de l'ARIA.
- Snapshots sémantiques (arbre à roulettes) pour écrans critiques.
16) Métriques de qualité d'accessibilité
A11y Coverage : proportion de composants avec les feuilles de contrôle passées.
Keyboard-only Pass Rate : pourcentage de scénarios parcourus par le clavier.
Contrast Violences/1k éléments.
SR Flow Time : temps de passage du script avec le lecteur d'écran.
User-feedback : plaintes concernant l'accessibilité, le temps de réaction et les corrections.
17) Chèque du composant
- Sémantique/rôle correct sans ARIA redondant
- Les étiquettes signées, 'aria-' sont correctes
- Contrôle complet du clavier, focus visible
- Le contraste texte/icônes/limites est normal
- Les erreurs et les états sont prononcés par le lecteur d'écran
- Respect de prefers-reduced-motion
- Taille de la zone cliquable ≥ 40-48 px
- Localisation et RTL ne cassent pas la mise en page
18) Anti-modèles
Boutons de dive sans rôle/clavier.
Masquer le focus 'outline : none' sans alternative.
Placholder au lieu de label.
Erreurs uniquement en couleur.
Modeles sans piège de mise au point et sans « Esc ».
Drag-only sans clavier.
Tracés/parallax longs sans option de désactivation.
19) Rôles et processus
A11y-propriétaire dans l'équipe (Product/Design/Dev).
La définition de dan (DoD) inclut la disponibilité.
Design-revew : test de contraste, focus, labels.
Code-revew : sémantique/ARIA, test par clavier.
Audits réguliers et plan d'amélioration.
20) Mise en œuvre par itérations
Itération 1 - Fondation (2 semaines) :- Sémantique/titres, contraste, focus et clavier, formes de base et erreurs.
- Modeles, talons/accordéons, tableaux/graphiques avec CV texte, sous-titres vidéo, animation réduite.
- Auto-tests en IC, RTL/i18n, métriques, audits réguliers, formation de l'équipe.
21) Modèles et extraits
Modeleuse (simplifiée) :html
<div role="dialog" aria-modal="true" aria-labelledby="dlg-title" aria-describedby="dlg-desc">
<h2 id="dlg-title">Подтвердите действие</h2>
<p id="dlg-desc">Эта операция необратима.</p>
<button>Отмена</button>
<button>Подтвердить</button>
</div>
Bouton Passer au contenu :
html
<a class="skip-link" href="#main">Перейти к основному содержимому</a>
<main id="main">...</main>
Respect prefers-reduced-motion :
css
@media (prefers-reduced-motion: reduce) {
{ animation-duration: 0.01ms!important; animation-iteration-count: 1!important; transition: none!important; }
}
22) Mini-FAQ
Ai-je besoin d'une version distincte pour les malvoyants ?
Non. Une version adaptative et accessible pour tout le monde avec des paramètres.
Suffit-il de ne vérifier que le contraste ?
Non. Le contraste n'est qu'une partie. Vous avez besoin d'un clavier, d'un focus, d'une sémantique, d'erreurs de forme, de médias, etc.
ARIA va tout résoudre ?
ARIA ne corrigera pas la sémantique erronée. D'abord les étiquettes correctes, puis ARIA-raffinement.
Total
L'accessibilité est une discipline systémique : la sémantique → le clavier/tour → le contraste/couleur → les formes/erreurs → les media/graphiques → i18n/RTL → le plan de test et les actes de naissance. Faites de la disponibilité une partie de la culture DoD et de l'équipe - et votre produit deviendra vraiment polyvalent, fiable et convivial pour tous.