Communitygithub.com

Accessibilité (WCAG 2.2)

Concevoir, implémenter et auditer des interfaces accessibles conformes au WCAG 2.2 Niveau AA pour le Web, iOS et Android — rôles ARIA sémantiques, étiquettes, traits d'accessibilité, indications, gestion du focus, contraste, taille des cibles et support des lecteurs d'écran. À utiliser lors de la construction ou de l'audit d'interfaces pour la conformité en matière d'accessibilité, la navigation au clavier ou le support des lecteurs d'écran.

Qu'est-ce que Accessibilité (WCAG 2.2) ?

Cette compétence spécialisée permet de concevoir, implémenter et auditer des interfaces utilisateur accessibles conformes aux normes WCAG 2.2 Niveau AA, sur les plateformes Web, iOS et Android. Elle couvre l'ensemble des critères de succès POUR (Perceptible, Utilisable, Compréhensible et Robuste), en mettant l'accent sur les aspects techniques tels que les rôles ARIA sémantiques, les étiquettes d'accessibilité, la gestion du focus, le contraste des couleurs, la taille minimale des cibles (24x24 px CSS), et le support des lecteurs d'écran. L'IA générant cette compétence est invitée à suivre un processus en cinq étapes : identification du rôle du composant, définition des attributs perceptibles, implémentation des commandes utilisables, garantie d'une logique compréhensible et vérification de la compatibilité robuste. Elle fournit des exemples de code concrets (HTML/ARIA, iOS SwiftUI, Android Compose) et une checklist des bonnes pratiques pour éviter les anti-patrons courants (comme les div-boutons ou la signification uniquement par la couleur). Cette compétence est utile pour les développeurs front-end, les designers d'interaction et les architectes de systèmes de conception souhaitant intégrer l'accessibilité dès la phase de conception.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/rhpxgr8pzm-max/claude-skills/tree/HEAD/plugins/tally-dev/skills/accessibility

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Accessibilité (WCAG 2.2) ?

Cette compétence garantit que les interfaces numériques sont Perceptibles, Utilisables, Compréhensibles et Robustes (POUR) pour tous les utilisateurs, y compris ceux qui utilisent des lecteurs d'écran, des commandes par contacteur ou une navigation au clavier. Elle se concentre sur l'implémentation technique des critères de succès WCAG 2.2.

Quand l'utiliser

  • Définir les spécifications des composants d'interface pour le Web, iOS ou Android.
  • Auditer le code existant pour identifier les obstacles à l'accessibilité ou les lacunes de conformité.
  • Implémenter les nouvelles normes WCAG 2.2 comme la Taille des Cibles (Minimum) et l'Apparence du Focus.
  • Traduire les exigences de conception de haut niveau en attributs techniques (rôles ARIA, traits, indications).

Concepts clés

  • Principes POUR : Le fondement du WCAG (Perceptible, Utilisable, Compréhensible, Robuste).
  • Mappage sémantique : Utiliser des éléments natifs plutôt que des conteneurs génériques pour offrir une accessibilité intégrée.
  • Arbre d'accessibilité : La représentation de l'interface que les technologies d'assistance "lisent" réellement.
  • Gestion du focus : Contrôler l'ordre et la visibilité du curseur du clavier/lecteur d'écran.
  • Étiquetage et indications : Fournir du contexte via aria-label, accessibilityLabel et contentDescription.

Comment ça fonctionne

Étape 1 : Identifier le rôle du composant

Déterminer la fonctionnalité (par exemple, est-ce un bouton, un lien ou un onglet ?). Utiliser l'élément sémantique natif le plus approprié avant de recourir à des rôles personnalisés.

Étape 2 : Définir les attributs perceptibles

  • Assurer un contraste de texte d'au moins 4.5:1 (normal) ou 3:1 (grand/interface).
  • Ajouter des alternatives textuelles pour les contenus non textuels (images, icônes).
  • Implémenter un réaffichage réactif (jusqu'à 400 % de zoom sans perte de fonctionnalité).

Étape 3 : Implémenter des commandes utilisables

  • Assurer une taille de cible minimale de 24x24 pixels CSS (WCAG 2.2 SC 2.5.8).
  • Vérifier que tous les éléments interactifs sont accessibles au clavier et disposent d'un indicateur de focus visible (SC 2.4.11).
  • Proposer des alternatives à un seul pointeur pour les mouvements de glissement.

Étape 4 : Garantir une logique compréhensible

  • Utiliser des modèles de navigation cohérents.
  • Fournir des messages d'erreur descriptifs et des suggestions de correction (SC 3.3.3).
  • Implémenter la "Saisie redondante" (SC 3.3.7) pour éviter de demander deux fois les mêmes données.

Étape 5 : Vérifier la compatibilité robuste

  • Utiliser les modèles corrects Nom, Rôle, Valeur.
  • Implémenter aria-live ou les régions live pour les mises à jour dynamiques de statut.

Schéma d'architecture d'accessibilité

flowchart TD
  UI["Composant UI"] --> Platform{Plateforme ?}
  Platform -->|Web| ARIA["WAI-ARIA + HTML5"]
  Platform -->|iOS| SwiftUI["Traits d'accessibilité + Étiquettes"]
  Platform -->|Android| Compose["Sémantique + ContentDesc"]

  ARIA --> AT["Technologie d'assistance (Lecteurs d'écran, Contacteurs)"]
  SwiftUI --> AT
  Compose --> AT

Correspondance multiplateforme

FonctionnalitéWeb (HTML/ARIA)iOS (SwiftUI)Android (Compose)
Étiquette principalearia-label / <label>.accessibilityLabel()contentDescription
Indication secondairearia-describedby.accessibilityHint()Modifier.semantics { stateDescription = ... }
Rôle d'actionrole="button".accessibilityAddTraits(.isButton)Modifier.semantics { role = Role.Button }
Mises à jour livearia-live="polite".accessibilityLiveRegion(.polite)Modifier.semantics { liveRegion = LiveRegionMode.Polite }

Exemples

Web : Recherche accessible

<form role="search">
  <label for="search-input" class="sr-only">Rechercher des produits</label>
  <input type="search" id="search-input" placeholder="Rechercher..." />
  <button type="submit" aria-label="Lancer la recherche">
    <svg aria-hidden="true">...</svg>
  </button>
</form>

iOS : Bouton d'action accessible

Button(action: deleteItem) {
    Image(systemName: "trash")
}
.accessibilityLabel("Supprimer l'élément")
.accessibilityHint("Supprime définitivement cet élément de votre liste")
.accessibilityAddTraits(.isButton)

Android : Interrupteur accessible

Switch(
    checked = isEnabled,
    onCheckedChange = { onToggle() },
    modifier = Modifier.semantics {
        contentDescription = "Activer les notifications"
    }
)

Anti-patrons à éviter

  • Div-boutons : Utiliser une <div> ou un <span> pour un événement de clic sans ajouter de rôle ni de support clavier.
  • Signification uniquement par la couleur : Indiquer une erreur ou un statut uniquement par un changement de couleur (par exemple, en rendant une bordure rouge).
  • Focus modal non contenu : Les modales qui ne piègent pas le focus, permettant aux utilisateurs du clavier de naviguer dans le contenu d'arrière-plan pendant que la modale est ouverte. Le focus doit être contenu et l'utilisateur doit pouvoir en sortir via la touche Échap ou un bouton de fermeture explicite (WCAG SC 2.1.2).
  • Texte alternatif redondant : Utiliser "Image de..." ou "Photo de..." dans le texte alternatif (les lecteurs d'écran annoncent déjà le rôle "Image").

Liste de vérification des bonnes pratiques

  • Les éléments interactifs respectent la taille de cible minimale de 24x24 px (Web) ou 44x44 pt (Natif).
  • Les indicateurs de focus sont clairement visibles et à contraste élevé.
  • Les modales contiennent le focus lorsqu'elles sont ouvertes et le libèrent proprement lors de la fermeture (touche Échap ou bouton de fermeture).
  • Les listes déroulantes et les menus rétablissent le focus sur l'élément déclencheur lors de la fermeture.
  • Les formulaires fournissent des suggestions d'erreur textuelles.
  • Tous les boutons uniquement iconographiques ont une étiquette textuelle descriptive.
  • Le contenu se réaffiche correctement lorsque le texte est agrandi.

Références

Compétences connexes

  • frontend-patterns
  • design-system
  • liquid-glass-design
  • swiftui-patterns

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés