BaliseTonSite

Accessibilité (a11y) Assistée

Génère intelligemment les attributs ARIA et les textes alternatifs (Alt text) - forge un équipement utilisable par tous les guerriers, quelles que soient leurs capacités.

8.1La forge inclusive

Les erreurs d'accessibilité les plus courantes en React :

Problèmes fréquents

  • • Images sans alt ou avec alt="" vide
  • • Boutons icônes sans label (<button><i/></button>)
  • • Liens sans texte descriptif ("Cliquez ici")
  • • Modals sans focus trap ni role="dialog"
  • • Formulaires sans labels associés
  • • Contraste de couleur insuffisant

Bénéfices de l'a11y

  • • 15-20% de la population avec un besoin d'a11y
  • • Meilleur SEO (Google lit comme un screen reader)
  • • Obligation légale en Europe (RGAA)
  • • Meilleure UX pour tous (pas seulement les personnes handicapées)

8.2Prompt d'audit accessibilité sur un composant

Prompt : Audit a11y complet sur un composantmarkdown
Tu es un expert en accessibilité web (WCAG 2.1 AA / ARIA 1.2).

Voici le composant React :
[COLLE TON COMPOSANT]

Réalise un audit d'accessibilité complet :
1. Identifie chaque violation WCAG avec son critère (ex. 1.1.1)
2. Explique l'impact pour l'utilisateur (screen reader, navigation clavier, daltonisme)
3. Donne le code corrigé pour chaque problème
4. Vérifie : images, boutons, liens, formulaires, focus, couleurs, sémantique HTML

Indique la sévérité : critique / majeur / mineur.

8.3Génération automatique d'alt text

Pour les images dynamiques (articles WordPress), l'alt text doit être généré depuis le contexte, pas mis vide ou copié bêtement du titre :

lib/utils/generate-alt-text.tstypescript
/**
 * Génère un alt text pertinent pour une image d'article.
 * Préfère le texte alt WordPress s'il existe,
 * sinon construit une description depuis le contexte.
 */
export function generateAltText(params: {
    wpAltText?: string;
    postTitle?: string;
    context?: 'featured' | 'content' | 'author';
    authorName?: string;
}): string {
    const { wpAltText, postTitle, context = 'content', authorName } = params;

    // 1. Utiliser l'alt WordPress s'il est significatif
    if (wpAltText && wpAltText.trim().length > 3) {
        return wpAltText;
    }

    // 2. Générer selon le contexte
    if (context === 'featured' && postTitle) {
        return `Image illustrant l'article : ${postTitle}`;
    }
    if (context === 'author' && authorName) {
        return `Photo de profil de ${authorName}`;
    }

    // 3. Fallback générique
    return postTitle ? `Illustration de ${postTitle}` : '';
}

8.4Corrections ARIA les plus générées

Corrections a11y types générées par l'IAtsx
// ❌ Bouton icône sans label
<button onClick={onDelete}>
    <i className="fa-solid fa-trash" />
</button>

// ✅ Avec aria-label
<button onClick={onDelete} aria-label={`Supprimer ${itemName}`}>
    <i className="fa-solid fa-trash" aria-hidden="true" />
</button>

// --- 

// ❌ Dialog sans rôle ni gestion du focus
<div className="modal">
    <h2>Confirmer</h2>
    ...
</div>

// ✅ Dialog accessible (Radix UI)
<Dialog.Root>
    <Dialog.Trigger asChild>
        <button>Ouvrir</button>
    </Dialog.Trigger>
    <Dialog.Portal>
        <Dialog.Overlay className="fixed inset-0 bg-black/50" />
        <Dialog.Content
            className="fixed inset-auto top-1/2 -translate-y-1/2"
            aria-describedby="dialog-desc"
        >
            <Dialog.Title>Confirmer la suppression</Dialog.Title>
            <Dialog.Description id="dialog-desc">
                Cette action est irréversible.
            </Dialog.Description>
        </Dialog.Content>
    </Dialog.Portal>
</Dialog.Root>

// ---

// ❌ Lien "Lire la suite" non descriptif (tous identiques pour un screen reader)
<a href={url}>Lire la suite</a>

// ✅ Label unique grâce à aria-label ou aria-labelledby
<a href={url} aria-label={`Lire la suite : ${article.title}`}>
    Lire la suite
</a>

Workflow a11y assisté

  1. 1. Lance axe sur ta page → copie les violations
  2. 2. Colle dans l'IA avec le composant concerné
  3. 3. L'IA génère les corrections ARIA précises
  4. 4. Vérifie en navigant uniquement au clavier (Tab + Enter)
  5. 5. Teste avec NVDA/VoiceOver si possible

Verifie tes acquis

5 questions pour valider ce chapitre

1. Comment l'IA aide-t-elle l'accessibilité (a11y) ?

Valide et sauvegarde ce chapitre

Ne perds pas le fil de ton apprentissage. Chaque QCM terminé sauvegarde ton score. Crée ton profil gratuitement pour débloquer toutes les évaluations du site et retrouver tes résultats plus tard.

Commencer l'aventure
Déjà membre ?Connecte-toi