O tabindexatributo define explicitamente a ordem de navegação para elementos focalizáveis (normalmente links e controles de formulário) em uma página. Também pode ser usado para definir se os elementos devem ser focalizáveis ou não.
[Ambos] tabindex="0"e tabindex="-1"têm um significado especial e fornecem funcionalidades distintas em HTML. Um valor de 0indica que o elemento deve ser colocado na ordem de navegação padrão. Isso permite que os elementos que não são nativamente focalizável (tais como <div>, <span>, e <p>) para receber o foco do teclado. É claro que geralmente se deve usar links e controles de formulário para todos os elementos interativos, mas isso permite que outros elementos sejam focalizáveis e acionem a interação.
Um tabindex="-1"valor remove o elemento do fluxo de navegação padrão (ou seja, um usuário não pode acessá-lo), mas permite que ele receba foco programático , o que significa que o foco pode ser definido a partir de um link ou com script. ** Isso pode ser muito útil para elementos que não devem ser tabulados, mas que podem precisar ter o foco definido para eles .
Um bom exemplo é uma janela de diálogo modal - quando aberta, o foco deve ser definido para o diálogo para que um leitor de tela comece a ler e o teclado comece a navegar dentro do diálogo. Como a caixa de diálogo (provavelmente apenas um <div>elemento) não tabindex="-1"pode ser focalizada por padrão, atribuí-la permite que o foco seja definido com o script quando for apresentada.
Um valor de -1também pode ser útil em widgets e menus complexos que utilizam teclas de seta ou outras teclas de atalho para garantir que apenas um elemento dentro do widget seja navegável com a tecla tab, mas ainda permite que o foco seja definido em outros componentes dentro do widget.