Che cos'è l'attributo tabindex HTML?


Risposte:


301

tabindexè un attributo globale responsabile di due cose:

  1. imposta l'ordine degli elementi "focalizzabili" e
  2. si rende elementi "attivabile" .

Nella mia mente la seconda cosa è ancora più importante della prima. Esistono pochissimi elementi che possono essere attivati ​​per impostazione predefinita (ad es. <a> e controlli modulo). Gli sviluppatori aggiungono molto spesso alcuni gestori di eventi JavaScript (come 'onclick') su elementi non focalizzabili (<div>, <span> e così via) e il modo per rendere la tua interfaccia reattiva non solo agli eventi del mouse ma anche agli eventi della tastiera (ad es. "onkeypress") significa rendere tali elementi focalizzabili. Infine, se non vuoi impostare l'ordine ma fai solo un uso focalizzabile del tuo elemento tabindex="0"su tutti questi elementi:

<div tabindex="0"></div>

Inoltre, se non si desidera che sia focalizzabile tramite il tasto Tab, utilizzare tabindex="-1". Ad esempio, il collegamento seguente non verrà focalizzato durante l'utilizzo dei tasti di tabulazione per attraversare.

<a href="#" tabindex="-1">Tab key cannot reach here!</a>

2
Ho scoperto che <div tabindex>funziona anche. C'è un motivo per non usarlo?
danijar,

5
L'uso di tabindex di -1 è conveniente per cose come saltare i collegamenti. Puoi creare un collegamento a un oggetto a qualcosa sopra il contenuto a cui stai tentando di collegare l'utente senza che sia possibile raggiungere il collegamento all'elemento stesso.
Brett,

4
Vale la pena notare - e probabilmente la risposta dovrebbe essere corretta - che il valore -1non è adatto quando "non si desidera che sia focalizzato", ma piuttosto quando si desidera impedire il focus come risultato della navigazione da tastiera. L'elemento può ancora essere focalizzato, ma non con la tastiera.
Amn

2
@danijar sì: è una violazione delle specifiche. Per html.spec.whatwg.org/multipage/… , "L'attributo tabindex, se specificato, deve avere un valore che sia un numero intero valido" .
Mark Amery,

Questa -1è la fine della mia ricerca di una soluzione per oggetti che avevano una posizione assoluta e si comportavano in modo strano quando focalizzati sulla scheda! HOorraaayyyyy.
John Mutuma,

54

Quando l'utente preme il pulsante di tabulazione, l'utente passerà attraverso il modulo nell'ordine 1, 2 e 3 come indicato nell'esempio seguente.

Per esempio:

Name: <input name="name" tabindex="1"  />
Age: <input name="age" tabindex="3"  />
Email: <input name="email" tabindex="2"  />

-> Cosa succede se tabindex è -1? Cosa significa?

7
@AlyssaGono sembra che tu non abbia letto la risposta con 85 voti ... tabindex di -1 significa che non puoi raggiungere quell'elemento premendo il pulsante tab
John Ruddell

24

Il è usato per definire una sequenza che gli utenti seguono quando usano il tasto Tab per navigare attraverso una pagina. Per impostazione predefinita, l'ordine di tabulazione naturale corrisponderà all'ordine di origine nel markup.

L'attributo content tabindex consente agli autori di controllare se un elemento dovrebbe essere focalizzabile, se si suppone che sia raggiungibile usando la navigazione del focus sequenziale e quale debba essere l'ordine relativo dell'elemento ai fini della navigazione del focus sequenziale. Il nome "indice tab" deriva dall'uso comune del tasto "tab" per navigare attraverso gli elementi focalizzabili. Il termine "tabulazione" si riferisce all'avanzamento degli elementi focalizzabili che è possibile raggiungere mediante la navigazione sequenziale del focus.
Raccomandazione del W3C: HTML5
Sezione 7.4.1 Navigazione del focus sequenziale e l'attributo tabindex

I tabindexinizia da 0 o un numero intero positivo e incrementi verso l'alto. È comune vedere il valore 0 evitato perché nelle versioni precedenti di Mozilla e IE, il tabindex inizierebbe da 1, passerebbe a 2 e solo dopo 2 andrebbe a 0 e poi 3. Il valore intero massimo per tabindexè 32767. Se gli elementi hanno lo stesso, tabindextabindex corrisponderà all'ordine di origine nel markup. Un valore negativo rimuoverà l'elemento dall'indice della scheda in modo che non venga mai focalizzato.

Se un elemento viene assegnato un tabindexdi -1esso rimuoverà l'elemento e non potrà mai essere attivabile ma attenzione può essere dato per l'elemento di programmazione utilizzando element.focus().

Se si specifica l' tabindexattributo senza valore o vuoto, verrà ignorato.

Se l' disabledattributo è impostato su un elemento che ha un tabindex, l'elemento verrà ignorato.


Se una tabindex viene impostato in qualsiasi punto della pagina, indipendentemente da dove si trova rispetto al resto del codice (potrebbe essere nel piè di pagina, nell'area dei contenuti, ovunque) se esiste un definito, tabindexl'ordine delle schede inizierà dall'elemento a cui è assegnato in modo esplicito il tabindexvalore più basso sopra 0. Quindi scorrerà gli elementi definiti e solo dopo che gli tabindexelementi espliciti sono stati sottoposti a tabulazione, tornerà all'inizio del documento e seguirà l'ordine naturale di tabulazione.


Nella specifica HTML4 solo i seguenti elementi supportano l'attributo tabindex: , , , , , , e . Ma le specifiche HTML5, tenendo presente l'accessibilità, consentono di assegnare tutti gli elementi tabindex.

-

Per esempio

<ul tabindex="-1">
  <li tabindex="1"></li>
  <li tabindex="2"></li>
  <li tabindex="3"></li>
</ul>

equivale a

<ul tabindex="-1">
  <li tabindex="1"></li>
  <li tabindex="1"></li>
  <li tabindex="1"></li>
</ul>

perché indipendentemente dal fatto che siano tutti assegnati tabindex="1", seguiranno comunque lo stesso ordine, il primo è il primo e l'ultimo è l'ultimo. Questo è anche lo stesso ..

<div>
  <a></a>
  <a></a>
  <a></a>
</div>

perché non è necessario definire esplicitamente tabIndex se si tratta di un comportamento predefinito. A divper impostazione predefinita non sarà attivabile, i anchortag lo saranno.


Quali versioni di IE e Mozilla iniziano tabindexcon 1 anziché 0 ?
Arminrosu,

-1; questa risposta è un po 'confusa. Dici che le "versioni precedenti" di IE e Firefox hanno la tabulazione inizia da tabindex 1 invece di tabindex 0 ... ma è quello che fanno tutti i browser, come richiesto dalle specifiche! Ti contraddici anche, prima dicendo " tabindexinizia da 0" ma poi dicendo "l'ordine di tabulazione inizierà dall'elemento a cui è esplicitamente assegnato il tabindexvalore più basso sopra 0" .
Mark Amery,

18

Controllo dell'ordine delle tabulazioni (premendo il tabtasto per spostare lo stato attivo) all'interno della pagina.

Riferimento: http://www.w3.org/TR/html401/interact/forms.html#h-17.11.1


6
Inoltre, avere tabindex rende un elemento selezionabile con il clic del mouse. (Aggiunge contorni punteggiati, può essere disegnato usando :focus)
user123444555621

@ Pumbaa80 Puoi comunque selezionare qualsiasi elemento di input facendo clic con il mouse, e lo stesso vale per l'utilizzo del CSS ": focus". L'attributo tabindex è facoltativo.
Estratto il

6
Questo vale solo per gli elementi di input. Il mio commento si applica a qualsiasi tipo di elemento. Vedi jsfiddle.net/XsYCj per un esempio.
user123444555621

8

i valori impostati determinano l'ordine in cui il focus della tastiera si sposterà tra gli elementi sul sito Web.

Nel seguente esempio, la prima volta che premi tab, il cursore si sposterà su #foo, quindi #awesome, quindi #bar

<input id="foo" tabindex="1"  />
<input id="bar" tabindex="3"  />
<input id="awesome" tabindex="2"  />

Se non hai definito gli indici delle schede da nessuna parte, lo stato attivo della tastiera seguirà i tag HTML della tua pagina nell'ordine in cui sono definiti nel documento HTML.

Se esegui il tab più volte di quanto hai specificato tabindexes, lo stato attivo si sposterà come se non ci fossero tabindex, cioè nell'ordine di apparizione dei tag HTML


3

Può essere utilizzato per modificare la sequenza di navigazione del focus dell'elemento modulo predefinito.

Quindi se hai:

text input A

text input B

submit button C

utilizzando il tasto Tab si naviga attraverso A-> B-> C. Tabindex ti permette di cambiare quel flusso.


3

Normalmente, quando l'utente passa da un campo all'altro in un modulo (in un browser che consente la tabulazione, non tutti i browser lo fanno) l'ordine è l'ordine in cui i campi compaiono nel codice HTML.

Tuttavia, a volte si desidera che l'ordine delle schede scorra in modo leggermente diverso. In tal caso, è possibile numerare i campi utilizzando TABINDEX. Le schede quindi scorrono in ordine dal più basso TABINDEX al più alto.

Maggiori informazioni al riguardo sono disponibili qui w3

un'altra buona illustrazione può essere trovata qui


2

In parole semplici, tabindexviene utilizzato per concentrarsi su elementi. Sintassi: tabindex="numeric_value" questo numeric_valueè il peso dell'elemento. Si accederà prima a un valore inferiore.


"Per prima cosa si accederà al valore più basso." - non del tutto vero; 0 e valori negativi hanno significati speciali.
Mark Amery,

1

L' attributo tabindex HTML è responsabile per indicare se un elemento è raggiungibile dalla navigazione da tastiera . Quando l'utente preme il tasto Tab, lo stato attivo viene spostato da un elemento a un altro. Utilizzando l'attributo tabindex, il flusso dell'ordine di tabulazione viene spostato.


0

La tabulazione tramite i controlli di solito avviene in sequenza come appaiono sul codice HTML.

Utilizzando tabindex, la tabulazione scorrerà dal controllo con il tabindex più basso al controllo con il tabindex più alto in ordine sequenziale tabindex

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.