Dal glossario dell'accessibilità

AccessiWeb: il web accessibile e inclusivo

W

WAI-ARIA

Suite di ruoli, stati e proprietà per migliorare accessibilità di componenti complessi.

DefinizioneWAI-ARIA (Accessible Rich Internet Applications) è la specifica del W3C che aggiunge ruoli (es. dialog, navigation), stati (es. aria-expanded, aria-selected) e proprietà (es. aria-controls, aria-labelledby) per descrivere a tecnologie assistive componenti e cambiamenti dinamici che l’HTML nativo non rappresenta da solo. ARIA migliora l’interoperabilità con screen reader, braille e comandi vocali, ma va usata con parsimonia.

Principi chiave

  • Prima regola: se esiste un elemento nativo (button, link, details/summary), usalo. ARIA non sostituisce l’HTML semantico.
  • Tastiera e focus: ARIA non “aggiunge” automaticamente interazione. Devi gestire tab, Enter/Space, roving tabindex e focus visibile.
  • Stato reale = stato annunciato: sincronizza sempre gli attributi aria-* con il vero stato del componente.
  • Pattern ufficiali: segui le WAI-ARIA Authoring Practices (APG) per menù, accordioni, dialog, tab, combobox.

Relazione con WCAG/EN 301 549

ARIA è uno strumento per soddisfare vari criteri delle WCAG 2.1, in particolare 4.1.2 Nome, Ruolo, Valore e 1.3.1 Informazioni e relazioni. È richiamata dalla norma EN 301 549 nei requisiti web/software. Un uso scorretto di ARIA può introdurre nuove barriere.

Esempi pratici

Pulsante che espande una sezione

<button id="toggler"
  aria-expanded="false"
  aria-controls="panel">Mostra dettagli</button>

<div id="panel" hidden>
  <p>Contenuto espandibile…</p>
</div>

<script>
  const btn = document.getElementById('toggler');
  const panel = document.getElementById('panel');
  btn.addEventListener('click', () => {
    const open = btn.getAttribute('aria-expanded') === 'true';
    btn.setAttribute('aria-expanded', String(!open));
    panel.hidden = open;
  });
</script>

Annunciare aggiornamenti di stato (esito form, aggiunto al carrello):

<div role="status" aria-live="polite" id="status"></div>
<script>document.getElementById('status').textContent = 'Prodotto aggiunto.';</script>

Errori comuni

  • Usare role="button" su un <div> invece di un vero <button> (manca gestione tastiera).
  • Impostare ruoli non compatibili con il contenuto (es. tablist senza gestione dei tab).
  • Dimenticare aria-label/aria-labelledby su icone-azione prive di testo visibile.
  • Ricorrere a ARIA per “curare” HTML errato: prima HTML semantico, poi ARIA.

Checklist rapida

  • Elemento nativo disponibile? Usalo.
  • Il componente è operabile solo da tastiera? Il focus è visibile?
  • Ruolo e relazioni (aria-controls, aria-labelledby) sono corretti?
  • Gli stati aria-* si aggiornano insieme al DOM?
  • Eventi live hanno un’area con role="status"/alert?

Voci correlate e collegamenti utili

Naviga il Glossario dell'accessibilità A-Z

Richiedi una consulenza gratuita

Il nostro team di Web Accessibility Expert certificati UNI 11621-3 è pronto a guidarti con le migliori soluzioni per il tuo business!

Contattaci adesso
Parla con un esperto di accessibilità

Ultimi articoli dal blog

Scopri il widget per l'accessibilità web

AccessiWeb

Soluzioni per un web accessibile e inclusivo

Inizia la tua prova gratuita