Guide d’implémentation d’une barre de progression accessible
Introduction
Les barres de progression sont couramment utilisées pour indiquer l'avancement d'une tâche ou d'un processus. Assurer leur accessibilité est essentiel pour que tous les utilisateurs, y compris ceux utilisant des technologies d’assistance, puissent comprendre l'état d'avancement.
Description technique
Structure HTML accessible
La structure HTML doit être sémantique et inclure des attributs ARIA pour une meilleure compréhension par les technologies d’assistance.
- Élément de Progression (
<div>
avecrole="progressbar"
) : Représente visuellement la progression. - Attributs ARIA :
aria-valuenow
: Indique la valeur actuelle de la progression.aria-valuemin
etaria-valuemax
: Définissent les valeurs minimale et maximale de la progression.aria-label
ouaria-labelledby
: Fournissent une description accessible de la barre de progression.
Comportement javascript accessible
- Mise à Jour Dynamique : Mettre à jour les attributs ARIA en temps réel pour refléter l'état actuel de la progression.
- Notifications aux Utilisateurs : Utiliser des techniques comme
aria-live
pour informer les utilisateurs des mises à jour importantes sans perturber leur expérience.
Bonnes pratiques d’accessibilité
- Respect des Standards :
- Suivre les directives WCAG 2.1, notamment le critère 4.1.2 sur les propriétés et états du nom.
- Messages Visuels et Auditifs :
- Assurer que les changements de progression sont annoncés de manière appropriée aux utilisateurs de technologies d’assistance.
- Compatibilité Multi-Appareils :
- Tester la barre de progression sur différents appareils et navigateurs pour garantir une expérience uniforme.
Recommandations supplémentaires
- Amélioration de l’Expérience Utilisateur :
- Ajouter des indications textuelles supplémentaires, comme un pourcentage, pour fournir plus de contexte aux utilisateurs.
- Assurer que la barre de progression est visible et contrastée pour les utilisateurs malvoyants.
Exemple de code accessible
<div
id="progressbar"
role="progressbar"
aria-valuemin="0"
aria-valuemax="100"
aria-valuenow="0"
aria-label="Progression de la tâche"
>
<div id="progress" style="width: 0%;"></div>
</div>
<script>
function updateProgress(value) {
const progressBar = document.getElementById('progressbar');
const progress = document.getElementById('progress');
if (value >= 0 && value <= 100) {
progress.style.width = value + '%';
progressBar.setAttribute('aria-valuenow', value);
}
}
// Exemple de mise à jour de la progression
let currentValue = 0;
const interval = setInterval(() => {
if (currentValue < 100) {
currentValue += 10;
updateProgress(currentValue);
} else {
clearInterval(interval);
}
}, 1000);
</script>