Aller au contenu

Considérations d’accessibilité dans le développement web

Garantir l’accessibilité du web est essentiel pour créer des expériences numériques inclusives. L’accessibilité profite non seulement aux utilisateurs en situation de handicap, mais améliore aussi l’expérience utilisateur globale et élargit votre audience. Ce guide couvre l’importance de l’accessibilité, les techniques pour rendre la manipulation du DOM accessible, ainsi que le rôle de l’ARIA (Accessible Rich Internet Applications) dans l’amélioration de l’accessibilité.

Créer un contenu accessible

Importance de l’accessibilité dans le développement web

L’accessibilité dans le développement web garantit que tous les utilisateurs, y compris ceux en situation de handicap, peuvent accéder au contenu web et interagir efficacement avec lui. L’Organisation mondiale de la santé estime que plus d’un milliard de personnes vivent avec une forme de handicap. En rendant votre contenu web accessible, vous vous adressez à un public plus large, améliorez la convivialité et respectez des normes juridiques telles que l’Americans with Disabilities Act (ADA) et les Web Content Accessibility Guidelines (WCAG).

Avantages de l’accessibilité

  1. Inclusivité : permet aux utilisateurs ayant divers handicaps d’accéder aux informations et aux services.
  2. Amélioration du SEO : les moteurs de recherche récompensent souvent les sites accessibles par de meilleurs classements.
  3. Conformité légale : aide à éviter d’éventuels problèmes juridiques liés aux normes d’accessibilité.
  4. Convivialité améliorée : améliore l’expérience utilisateur globale pour tous les visiteurs, y compris ceux sans handicap.

Techniques pour rendre la manipulation du DOM accessible

Assurez-vous que tous les éléments interactifs sont accessibles au clavier. Appuyez-vous sur l’ordre naturel du DOM pour la navigation par tabulation afin de conserver un flux logique. Évitez les valeurs tabindex explicites sauf si elles sont nécessaires pour des mises en page complexes, car les valeurs positives modifient l’ordre naturel de tabulation et peuvent perturber les utilisateurs du clavier. Veillez à ce que les indicateurs de focus visibles soient stylés afin que les utilisateurs du clavier puissent clairement voir quel élément est sélectionné.

html
<!DOCTYPE html>
<html>
<head>
    <title>Keyboard Navigation Example</title>
</head>
<body>
<h4>Press the 'Tab' key to navigate through the buttons!</h4>
    <button>Button 1</button>
    <button>Button 2</button>
    <button>Button 3</button>
</body>
</html>

Cet exemple s’appuie sur l’ordre naturel du DOM pour les boutons, ce qui facilite la navigation pour les utilisateurs du clavier.

Composants interactifs accessibles

Cet exemple montre comment créer un accordéon accessible à l’aide des rôles et propriétés ARIA, tout en gérant efficacement le focus.

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Accessible Accordion Example</title>
    <style>
        .accordion {
            border: 1px solid #ccc;
            border-radius: 5px;
            margin: 20px 0;
        }
        .accordion-header {
            padding: 10px;
            cursor: pointer;
            background-color: #f0f0f0;
            border-bottom: 1px solid #ccc;
            width: 100%;
            text-align: left;
        }
        .accordion-content {
            display: none;
            padding: 10px;
        }
    </style>
</head>
<body>

<h1>Accessible Accordion Example</h1>
<h4>Use your keyboard (Enter or Space key) to toggle the accordion!</h4>

<div class="accordion">
    <button class="accordion-header" id="accordion-header-1" aria-controls="accordion-content-1" aria-expanded="false">
        Section 1
    </button>
    <div class="accordion-content" id="accordion-content-1" role="region" aria-labelledby="accordion-header-1" tabindex="-1">
        <p>This is the content of section 1.</p>
    </div>
</div>

<div class="accordion">
    <button class="accordion-header" id="accordion-header-2" aria-controls="accordion-content-2" aria-expanded="false">
        Section 2
    </button>
    <div class="accordion-content" id="accordion-content-2" role="region" aria-labelledby="accordion-header-2" tabindex="-1">
        <p>This is the content of section 2.</p>
    </div>
</div>

<div class="accordion">
    <button class="accordion-header" id="accordion-header-3" aria-controls="accordion-content-3" aria-expanded="false">
        Section 3
    </button>
    <div class="accordion-content" id="accordion-content-3" role="region" aria-labelledby="accordion-header-3" tabindex="-1">
        <p>This is the content of section 3.</p>
    </div>
</div>

<script>
    document.querySelectorAll('.accordion-header').forEach(header => {
        header.addEventListener('click', function () {
            const expanded = this.getAttribute('aria-expanded') === 'true';
            this.setAttribute('aria-expanded', !expanded);
            const content = document.getElementById(this.getAttribute('aria-controls'));
            content.style.display = !expanded ? 'block' : 'none';
        });

        header.addEventListener('keydown', function (event) {
            if (event.key === 'Enter' || event.key === ' ') {
                event.preventDefault();
                this.click();
            }
        });
    });
</script>

</body>
</html>
  • Structure de l’accordéon : l’accordéon se compose d’en-têtes qui, lorsqu’on clique dessus, développent ou réduisent leur contenu associé.
  • HTML sémantique et ARIA :
    • Des éléments natifs <button> sont utilisés pour les en-têtes afin de garantir la prise en charge intégrée du clavier et des lecteurs d’écran.
    • aria-controls associe les en-têtes à leur contenu.
    • aria-expanded indique l’état de la section de l’accordéon.
    • role="region" sur les sections de contenu les identifie comme des régions importantes.
  • Accessibilité au clavier :
    • Des écouteurs d’événements gèrent les événements click et keydown pour permettre l’ouverture et la fermeture de l’accordéon au clavier (Enter ou Space).

Avantages :

  • Utilisabilité améliorée : garantit que l’accordéon est utilisable à la souris et au clavier.
  • Accessibilité renforcée : utilise des attributs ARIA pour communiquer l’état et la structure aux technologies d’assistance, le rendant accessible aux utilisateurs de lecteurs d’écran.
  • Gestion du focus : le focus reste sur le bouton déclencheur, conformément aux modèles standard des accordéons et en évitant des sauts de navigation inattendus pour les utilisateurs du clavier.

HTML sémantique

Utilisez des éléments HTML sémantiques pour transmettre le sens et la structure du contenu. Cela aide les technologies d’assistance à interpréter et à parcourir efficacement le contenu web.

html
<!DOCTYPE html>
<html>
<head>
    <title>Semantic HTML Example</title>
</head>
<body>
    <header>
        <h1>Main Heading</h1>
    </header>
    <nav>
        <ul>
            <li><a href="#section1">Section 1</a></li>
            <li><a href="#section2">Section 2</a></li>
        </ul>
    </nav>
    <main>
        <section id="section1">
            <h2>Section 1</h2>
            <p>Content for section 1.</p>
        </section>
        <section id="section2">
            <h2>Section 2</h2>
            <p>Content for section 2.</p>
        </section>
    </main>
    <footer>
        <p>Footer content</p>
    </footer>
</body>
</html>

Cet exemple utilise des éléments HTML sémantiques tels que <header>, <nav>, <main>, <section> et <footer> pour définir la structure de la page.

ARIA (Accessible Rich Internet Applications)

En savoir plus sur ARIA

Comme vous l’avez appris jusqu’à présent, ARIA (Accessible Rich Internet Applications) est un ensemble d’attributs qui peuvent être ajoutés aux éléments HTML pour améliorer l’accessibilité des utilisateurs de technologies d’assistance comme les lecteurs d’écran. Les attributs ARIA aident à définir les rôles, propriétés et états des éléments, rendant les applications web plus accessibles.

Utiliser les attributs ARIA pour améliorer l’accessibilité

Rôles ARIA

Les rôles ARIA définissent le type d’élément, aidant les technologies d’assistance à comprendre sa fonction.

html
<div role="button" aria-pressed="false">Toggle</div>

Cet élément non interactif utilise l’état aria-pressed pour indiquer son état d’activation.

Propriétés et états ARIA

Les propriétés et états ARIA fournissent des informations supplémentaires sur les éléments.

html
<!DOCTYPE html>
<html>
<head>
    <title>ARIA Example</title>
</head>
<body>
    <div role="alert" id="live-region">
        <!-- Dynamic content goes here -->
    </div>

    <script>
        document.getElementById('live-region').textContent = "This is an important message.";
    </script>
</body>
</html>

Cet exemple utilise des propriétés ARIA pour créer une région dynamique qui annonce des messages importants de manière dynamique.

Bonnes pratiques

  1. Utiliser du HTML sémantique : privilégiez toujours les éléments HTML sémantiques pour fournir un sens et une structure clairs au contenu.
  2. Mettre en œuvre l’accessibilité au clavier : assurez-vous que tous les éléments interactifs peuvent être accessibles et utilisés au clavier.
  3. Gérer efficacement le focus : contrôlez le focus par programmation pour guider les utilisateurs à travers les changements de contenu dynamiques.
  4. Utiliser ARIA avec discernement : appliquez les rôles, propriétés et états ARIA pour améliorer, et non remplacer, la sémantique des éléments HTML natifs.
  5. Tester avec des technologies d’assistance : testez régulièrement vos applications web avec des lecteurs d’écran et d’autres technologies d’assistance pour garantir l’accessibilité.
  6. Utiliser des outils de test automatisés : exécutez des vérifications avec des outils comme axe ou Lighthouse pour détecter rapidement les problèmes d’accessibilité courants.

INFO

Veillez toujours à ce que vos modales et autres éléments dynamiques soient accessibles en gérant efficacement le focus. Utilisez JavaScript pour piéger le focus à l’intérieur des modales, en faisant circuler les éléments focalisables avec la touche Tab afin d’empêcher les utilisateurs du clavier de naviguer involontairement en dehors de la boîte de dialogue. Cela améliore l’accessibilité et offre une meilleure expérience utilisateur.

Conclusion

L’accessibilité est un aspect fondamental du développement web qui garantit que votre contenu est utilisable par tout le monde, quelles que soient ses capacités. En créant du contenu accessible, en utilisant des techniques pour rendre la manipulation du DOM accessible et en exploitant les attributs ARIA, vous pouvez améliorer considérablement l’inclusivité et la convivialité de vos applications web. La mise en œuvre de ces pratiques aide non seulement à respecter les normes légales, mais améliore aussi l’expérience utilisateur globale.

Practice

Lesquels des éléments suivants sont des considérations importantes pour garantir l’accessibilité dans le développement web ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.