0Pricing
HTML Academy · Leçon

`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ées
  • polite — annoncées lorsque l’utilisateur fait une pause ; pour les mises à jour non urgentes
  • assertive — 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 inactif
  • aria-live="assertive" — annonce les modifications immédiatement (pour les erreurs)
  • aria-atomic="true" — annonce toute la région lorsqu’elle est modifiée
  • aria-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

  1. Quand utiliser ARIA plutôt que le HTML natif
  2. `role`, `button`, `alert`, `dialog` et repère
  3. `aria-label`, `aria-labelledby` et `aria-describedby`
  4. `aria-hidden` et `aria-live`
← Retour à HTML Academy