Dal glossario dell'accessibilità

AccessiWeb: il web accessibile e inclusivo

O

Operabilità da tastiera

Possibilità di usare interfacce senza mouse, con Tab/Shift+Tab e scorciatoie coerenti.

Definizione — L’operabilità da tastiera garantisce che ogni funzione di una pagina o applicazione sia raggiungibile e attivabile senza mouse, usando i comandi standard (Tab/Shift+Tab per muovere il focus, Enter/Space per attivare, frecce per spostarsi in controlli composti). È richiesta da WCAG 2.1.1 Keyboard (A) e si collega a 2.4.3 Ordine di focus, 2.4.7 Focus visibile, 4.1.2 Nome, Ruolo, Valore e 2.5.3 Label in Name.

Pattern fondamentali

  • Usa elementi nativi: <button>, <a>, <input>, <details>/<summary>. Evita “div-bottoni”: richiedono JS extra per gestire tastiera e stato ARIA.
  • Gestione del focus: ordine DOM coerente con la lettura; niente tabindex>0 diffuso; usa :focus-visible per indicatori chiari.
  • Componenti complessi: implementa i pattern WAI-ARIA APG (roving tabindex per tablist/menù/slider) e sincronizza gli aria-* con lo stato reale.
  • Niente trappole: evita/risolvi le keyboard trap; i modali devono potersi chiudere con Esc e bottone “Chiudi”.
  • Nome accessibile: il testo visibile deve far parte del nome accessibile del controllo (2.5.3), es. “Cerca” → “Cerca”.

Esempi

Pulsante vero (consigliato)

<button type="button">Apri menu</button>

Se devi proprio creare un “div-bottone” (sconsigliato)

<div role="button" tabindex="0" aria-pressed="false">Apri menu</div>
<script>
  const btn = document.querySelector('[role="button"]');
  function activate(e){ if(e.type==='click' || e.key==='Enter' || e.key===' ') { /* azione */ e.preventDefault(); } }
  btn.addEventListener('click', activate);
  btn.addEventListener('keydown', activate);
</script>

Tablist con roving tabindex (principio)

<div role="tablist">
  <button role="tab" aria-selected="true" tabindex="0">Profilo</button>
  <button role="tab" aria-selected="false" tabindex="-1">Impostazioni</button>
</div>
<div role="tabpanel">…</div>

Test rapidi

  • Naviga la pagina con Tab/Shift+Tab: puoi raggiungere tutti i controlli? l’ordine è logico?
  • Attiva i controlli con Enter/Space: funzionano come con il click?
  • Apri un dialog: c’è focus visibile, chiusura con Esc e ritorno al trigger?

Errori comuni

  • Affidarsi a JS che intercetta Tab impedendo l’uscita da componenti.
  • Usare link come bottoni (o viceversa), perdita di semantica e comportamenti attesi.
  • Controlli non focusabili, indicatori di focus rimossi, ordine di focus che segue il layout visivo ma non il DOM.

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