Utilizzare tabindex

Dave Gash
Dave Gash
Meggin Kearney
Meggin Kearney
Alexandra Klepper
Alexandra Klepper

L'ordine predefinito delle schede fornito dalla posizione DOM degli elementi HTML semantici è ma potrebbe essere necessario modificare l'ordine delle schede. In movimento nel codice HTML è l'ideale, ma potrebbe non essere fattibile. In questi casi, puoi utilizzare l'attributo HTML tabindex per impostare esplicitamente la scheda di un elemento posizione.

Supporto dei browser

  • 1
  • 12
  • 1,5
  • ≤4

Origine

tabindex può essere applicato a qualsiasi elemento, anche se non è necessariamente utile per ogni elemento, e prende un intervallo di valori interi. Con tabindex, puoi specificare un ordine esplicito per gli elementi della pagina attivabili, inserire un elemento altrimenti non attivabile nell'ordine delle schede e rimuovere gli elementi dall'ordine delle schede. Ad esempio:

tabindex="0": inserisce un elemento nell'ordine delle schede naturale. L'elemento può lo stato attivo deve essere attivato premendo Tab e l'elemento può essere messo a fuoco chiamando il metodo focus().

tabindex="-1": rimuove un elemento dall'ordine di tabulazione naturale, ma l'elemento può essere ancora attivato richiamando il relativo metodo focus().

tabindex="5": qualsiasi tabindex maggiore di 0 porta questo elemento in primo piano in base all'ordine delle tabulazioni naturali. Se sono presenti più elementi con un valore tabindex maggiore di 0, l'ordine delle schede parte dal valore più basso maggiore di zero e funziona fino a impulsi.

Ciò è particolarmente vero per elementi non di input come intestazioni, immagini o articoli titoli. Quando possibile, è preferibile organizzare il codice sorgente in modo che la sequenza DOM fornisca un in un ordine logico delle schede. Se utilizzi tabindex, limitalo all'interazione interattiva personalizzata controlli come pulsanti, schede, menu a discesa e campi di testo; ovvero gli elementi l'utente potrebbe aspettarsi di fornire input.

Aggiungi tabindex solo ai contenuti interattivi. Anche se i contenuti sono importanti, come un'immagine chiave, gli utenti di screen reader possono comprenderli senza l'aggiunta dello stato attivo.

Gestisci lo stato attivo a livello di pagina

A volte, tabindex è necessario per un'esperienza utente fluida. Ad esempio: se crei una singola pagina affidabile con diverse sezioni di contenuti, in cui tutti i contenuti sono visibili contemporaneamente. Può trattarsi di link di navigazione modificare i contenuti visibili, senza aggiornare la pagina.

In questo caso, identifica l'area dei contenuti selezionata e assegnale un valore tabindex di -1 e chiamare il metodo focus. In questo modo i contenuti non vengono mostrati in in base all'ordine delle schede naturale. Questa tecnica, chiamata gestione dello stato attivo, mantiene il contesto percepito dall'utente e sincronizzato con i contenuti visivi del sito.

Gestisci lo stato attivo nei componenti

In alcuni casi, devi gestire lo stato attivo anche a livello di controllo, ad esempio con componenti personalizzati.

Ad esempio, l'elemento select può ricevere lo stato attivo di base, ma una volta puoi utilizzare i tasti freccia per visualizzare altre opzioni selezionabili. Se crei un elemento select personalizzato, è importante replicarlo in modo che gli utenti della tastiera possano comunque interagire con il controllo.

Sapere quali comportamenti della tastiera implementare può essere difficile. La Creazione di applicazioni ARA (Accessible Rich Internet Applications) Pratiche la guida elenca i tipi di componenti e le tipologie di azioni da tastiera supportate.

Magari stai lavorando su Elementi personalizzati che una serie di pulsanti di opzione, ma con il tuo aspetto e la tua peculiarità comportamento degli utenti.

<radio-group>
    <radio-button>Water</radio-button>
    <radio-button>Coffee</radio-button>
    <radio-button>Tea</radio-button>
    <radio-button>Cola</radio-button>
    <radio-button>Ginger Ale</radio-button>
</radio-group>

Per determinare il supporto per la tastiera necessario, controlla le Pratiche di creazione di ARA . La Sezione 2 contiene un elenco di pattern di progettazione, tra cui: tabella delle caratteristiche per la radio gruppi, il componente esistente che più si avvicina al nuovo elemento.

Uno dei comportamenti più comuni della tastiera sono supportati i tasti freccia su/giù/sinistra/destra. Per aggiungere questo comportamento al nuovo utilizziamo una tecnica chiamata indice tabulazione itinerante.

Il tabindex mobile funziona impostando tabindex su -1 per tutti gli elementi figlio tranne il quello attualmente attivo.

<radio-group>
  <radio-button tabindex="0">Water</radio-button>
  <radio-button tabindex="-1">Coffee</radio-button>
  <radio-button tabindex="-1">Tea</radio-button>
  <radio-button tabindex="-1">Cola</radio-button>
  <radio-button tabindex="-1">Ginger Ale</radio-button>
</radio-group>

Il componente utilizza un listener di eventi da tastiera per determinare quale tasto l'utente preme; quando ciò accade, imposta l'attenzione del bambino tabindex su -1, imposta il valore tabindex del publisher secondario su 0 e definisce il metodo di messa a fuoco.

<radio-group>
    <!-- Assuming the user pressed the down arrow, we'll focus the next available child -->
    <radio-button tabindex="-1">Water</radio-button>
    <radio-button tabindex="0">Coffee</radio-button> // call .focus() on this element
    <radio-button tabindex="-1">Tea</radio-button>
    <radio-button tabindex="-1">Cola</radio-button>
    <radio-button tabindex="-1">Ginger Ale</radio-button>
</radio-group>

Quando l'utente raggiunge l'ultimo (o il primo, a seconda della direzione in cui si trova) spostamento dell'elemento attivo), l'elemento attivo torna alla prima (o all'ultima) figlio/a.

Prova l'esempio che segue. Ispeziona l'elemento nella DevTools per osservare lo spostamento del tabindex da una radio all'altra.

Modali e trappole per tastiera

È meglio evitare di gestire manualmente l'attenzione, poiché può portare a situazioni complicate. Ad esempio, un widget di completamento automatico che tenta di gestire lo stato attivo e le acquisizioni il comportamento della scheda, ma impedisce all'utente di abbandonarla fino al completamento. Si tratta di una cosiddetta trappola da tastiera e può essere molto frustrante per l'utente.

La Sezione 2.1.2 delle WCAG afferma che l'elemento attivo della tastiera non deve mai essere bloccato o bloccati in un particolare elemento della pagina. L'utente deve essere in grado di navigare da e verso tutti gli elementi della pagina utilizzando solo tastiera.

L'eccezione a questa regola sono le modali. Tuttavia, dovresti comunque evitare di utilizzare tabindex durante la creazione di una finestra modale. Con inert puoi: garantire che gli utenti non possano interagire accidentalmente con un elemento (un'azione intenzionale trappola della tastiera). Utilizza la <dialog> , che è inerte per impostazione predefinita, per creare una finestra modale per gli utenti durante il blocco schede e clic al di fuori della finestra modale. Ciò consente all'utente di concentrarsi su la selezione richiesta.