El tabindex
atributo define explícitamente el orden de navegación para los elementos enfocables (generalmente enlaces y controles de formulario) dentro de una página. También se puede utilizar para definir si los elementos deben ser enfocables o no.
[Ambos] tabindex="0"
y tabindex="-1"
tienen un significado especial y proporcionan una funcionalidad distinta en HTML. Un valor de 0
indica que el elemento debe colocarse en el orden de navegación predeterminado. Esto permite que elementos que no son de forma nativa enfocable (tales como <div>
, <span>
, y<p>
) para recibir el foco del teclado. Por supuesto, generalmente se deben usar enlaces y controles de formulario para todos los elementos interactivos, pero esto permite que otros elementos sean enfocables y activen la interacción.
Un tabindex="-1"
valor elimina el elemento del flujo de navegación predeterminado (es decir, un usuario no puede tabularlo), pero le permite recibir el enfoque programático , lo que significa que el enfoque se puede configurar desde un enlace o con secuencias de comandos. ** Esto puede ser muy útil para elementos a los que no se les debe asignar pestañas, pero que pueden necesitar tener el foco establecido en ellos .
Un buen ejemplo es una ventana de diálogo modal : cuando se abre, el foco debe establecerse en el diálogo para que un lector de pantalla comience a leer y el teclado comience a navegar dentro del diálogo. Debido a que el cuadro de diálogo (probablemente solo un <div>
elemento) no se puede enfocar de forma predeterminada, asignarlo tabindex="-1"
permite establecer el enfoque con secuencias de comandos cuando se presenta.
Un valor de -1
también puede ser útil en widgets y menús complejos que utilizan teclas de flecha u otras teclas de método abreviado para garantizar que solo un elemento dentro del widget sea navegable con la tecla de tabulación, pero aún así permitir que el foco se establezca en otros componentes dentro del widget.