aria-hidden e aria-live
Nascondere gli elementi decorativi e annunciare i contenuti dinamici agli screen reader
aria-hidden e aria-live è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
aria-hidden
aria-hidden="true" rimuove un elemento dall'albero dell'accessibilità: i lettori di schermo lo ignorano completamente:
<!-- 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! -->Casi d'uso di aria-hidden
Usi appropriati di 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>Errore comune con aria-hidden
Non applicate mai aria-hidden a elementi che possono ricevere il 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 trasforma una regione in una regione live: le modifiche vengono annunciate automaticamente:
<!-- 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>Valori di aria-live
I tre valori di aria-live:
off— predefinito: le modifiche non vengono annunciatepolite— annuncia le modifiche quando l'utente fa una pausa; per aggiornamenti non urgentiassertive— annuncia immediatamente e interrompe la lettura; per errori e avvisi critici
aria-atomic
aria-atomic controlla se viene annunciata l'intera regione oppure solo le parti modificate:
<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 specifica quali tipi di modifica devono essere annunciati:
<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 -->Buone pratiche per le regioni live
Linee guida per le regioni live:
- Usate una regione live persistente per ogni tipo di annuncio (non createla e distruggetela)
- Iniziate con contenuto vuoto; inserite il testo per attivare l'annuncio
- Mantenete gli annunci concisi: i lettori di schermo possono interrompersi o rimanere indietro
- Per gli stati di caricamento: usate polite
- Per gli errori nei moduli: usate assertive o role="alert"
Pattern per le notifiche toast
Annunciare le notifiche toast con le regioni live:
<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" indica che il contenuto è in fase di aggiornamento:
<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>Verifica rapida
Quando dovreste usare aria-live="assertive" invece di "polite"?
Riepilogo: aria-hidden e aria-live
Elementi essenziali per il testo nascosto e le regioni live:
aria-hidden="true"— rimuove l'elemento dall'albero dell'accessibilità (mai gli elementi che possono ricevere il focus!)aria-live="polite"— annuncia le modifiche quando l'utente è inattivoaria-live="assertive"— annuncia immediatamente (per gli errori)aria-atomic="true"— annuncia l'intera regione quando cambiaaria-busy— sopprime gli annunci durante il caricamento
Domande Frequenti
La lezione «aria-hidden e aria-live» è gratuita?
Sì — il testo completo di «aria-hidden e aria-live» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «aria-hidden e aria-live»?
Nascondere gli elementi decorativi e annunciare i contenuti dinamici agli screen reader Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «aria-hidden e aria-live»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Quando usare ARIA invece dell’HTML nativo
- role button alert dialog e landmark
- aria-label aria-labelledby e aria-describedby
- aria-hidden e aria-live