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

Immagine stilizzata che rappresenta disabilità visive, uditive, motorie e percettive

AccessiWeb

Soluzioni per un web accessibile e inclusivo

Inizia la tua prova gratuita