`aria-hidden` et `aria-live`
Masquez les éléments décoratifs et annoncez le contenu dynamique aux lecteurs d’écran.
`aria-hidden` et `aria-live` est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
aria-hidden
aria-hidden="true" supprime un élément de l’arbre d’accessibilité — les lecteurs d’écran l’ignorent complètement :
<!-- Decorative icon: visible but skip by screen readers -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>
<!-- Decorative separator -->
<img src="divider.svg" alt="" aria-hidden="true">
<!-- Note: aria-hidden does NOT affect visibility or tab focus
A button with aria-hidden is still tabbable! -->Cas d’utilisation de aria-hidden
Utilisations appropriées de aria-hidden :
<!-- 1. Icons next to descriptive text -->
<button>
<svg aria-hidden="true"><!-- icon --></svg>
Save Document
</button>
<!-- 2. Repeated text in a card link -->
<a href="/blog/post-1">
<span aria-hidden="true">Read more</span>
<span class="sr-only">Read more: HTML5 Forms Guide</span>
</a>
<!-- 3. UI decoration (dots, decorative borders) -->
<span aria-hidden="true">•••</span>Piège lié à aria-hidden
N’appliquez jamais aria-hidden à des éléments pouvant recevoir le focus :
<!-- BAD: button is in tab order but invisible to screen readers -->
<button aria-hidden="true">Close</button>
<!-- Users reach this via Tab but hear nothing
They cannot tell if they're on a button or lost focus -->
<!-- If you want to hide from both: use hidden attribute -->
<button hidden>Close</button>
<!-- Or: disabled (but disabled removes from tab order) -->
<button disabled aria-hidden="true">Close</button>aria-live
aria-live transforme une zone en région dynamique — les modifications sont annoncées automatiquement :
<!-- polite: announce when user is idle -->
<div aria-live="polite" id="status"></div>
<!-- assertive: announce immediately, interrupting current speech -->
<div aria-live="assertive" id="errors"></div>
<script>
// Inject text to trigger announcement:
document.getElementById('status').textContent = 'File saved successfully.';
// Screen reader announces this without user moving focus
</script>Valeurs de aria-live
Les trois valeurs de aria-live :
off— valeur par défaut : les modifications ne sont pas annoncéespolite— annoncées lorsque l’utilisateur fait une pause ; pour les mises à jour non urgentesassertive— annoncées immédiatement et interrompent la lecture en cours ; pour les erreurs et les alertes critiques
aria-atomic
aria-atomic détermine si toute la région ou seulement les parties modifiées sont annoncées :
<div aria-live="polite" aria-atomic="true" id="timer">
Time remaining: 05:00
</div>
<!-- aria-atomic="true": announce the whole div each update -->
<!-- Without it: only the changed text node is announced
'Time remaining: 05:00' vs just '05:00' -->
<script>
setInterval(() => {
document.getElementById('timer').textContent = `Time remaining: ${getTime()}`;
}, 1000);
</script>aria-relevant
aria-relevant indique quels types de modifications sont annoncés :
<div
aria-live="polite"
aria-relevant="additions text" <!-- announce added content and text changes -->
id="feed"
>
<!-- New items added here -->
</div>
<!-- Values: additions, removals, text, all
Default: additions text
aria-relevant="removals" needed to announce deleted items -->Bonnes pratiques pour les régions dynamiques
Recommandations pour les régions dynamiques :
- Utilisez une région dynamique persistante par type d’annonce (ne la créez ni ne la supprimez)
- Commencez avec un contenu vide ; insérez du texte pour déclencher l’annonce
- Rédigez des annonces concises — les lecteurs d’écran interrompent la lecture ou prennent du retard
- Pour les états de chargement : utilisez polite
- Pour les erreurs de formulaire : utilisez assertive ou role="alert"
Modèles de notifications éphémères
Annoncez les notifications éphémères au moyen de régions dynamiques :
<div
role="status"
aria-live="polite"
aria-atomic="true"
id="toast-container"
class="sr-only"
></div>
<script>
function showToast(message) {
const container = document.getElementById('toast-container');
container.textContent = '';
// Force rerender for re-announcement:
requestAnimationFrame(() => {
container.textContent = message;
});
}
</script>aria-busy
aria-busy="true" indique que le contenu est en cours de mise à jour :
<div id="feed" aria-live="polite" aria-busy="false">
<!-- content -->
</div>
<script>
const feed = document.getElementById('feed');
feed.setAttribute('aria-busy', 'true');
await loadContent();
feed.innerHTML = newContent;
feed.setAttribute('aria-busy', 'false');
// Only now does the live region announce the update
</script>Vérification rapide
Quand devez-vous utiliser aria-live="assertive" plutôt que "polite" ?
Récapitulatif : aria-hidden et aria-live
Éléments essentiels du masquage et des régions dynamiques :
aria-hidden="true"— supprime l’élément de l’arbre d’accessibilité (jamais les éléments pouvant recevoir le focus !)aria-live="polite"— annonce les modifications lorsque l’utilisateur est inactifaria-live="assertive"— annonce les modifications immédiatement (pour les erreurs)aria-atomic="true"— annonce toute la région lorsqu’elle est modifiéearia-busy— suspend les annonces pendant le chargement
Questions Fréquemment Posées
La leçon « `aria-hidden` et `aria-live` » est-elle gratuite ?
Oui — le texte complet de « `aria-hidden` et `aria-live` » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « `aria-hidden` et `aria-live` » ?
Masquez les éléments décoratifs et annoncez le contenu dynamique aux lecteurs d’écran. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « `aria-hidden` et `aria-live` » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Quand utiliser ARIA plutôt que le HTML natif
- `role`, `button`, `alert`, `dialog` et repère
- `aria-label`, `aria-labelledby` et `aria-describedby`
- `aria-hidden` et `aria-live`