Atributo Tabindex y su efecto en la accesibilidad

El atributo tabindex forma parte de HTML y permite modificar la forma en la que un elemento recibe el foco del teclado. Su uso puede mejorar la accesibilidad de una interfaz, pero también puede empeorarla si se utiliza para corregir problemas que deberían resolverse con una estructura HTML adecuada.
La navegación con teclado es una parte esencial de la accesibilidad web. Muchas personas no utilizan ratón, bien porque trabajan con lector de pantalla, porque emplean otros productos de apoyo o porque simplemente prefieren desplazarse por la interfaz mediante la tecla de tabulación y otros comandos del teclado. En esos casos el foco indica en qué elemento se encuentra la interacción en cada momento.
Los elementos de HTML ya forman parte del orden de tabulación por defecto. Un enlace con href, un botón, un campo de formulario o un control nativo pueden recibir el foco sin necesidad de añadir atributos adicionales. Esto es importante porque HTML ya incorpora mucho comportamiento accesible cuando se utiliza correctamente.
El problema aparece cuando se intenta forzar el comportamiento de una página mediante tabindex sin tener en cuenta las expectativas de las personas que navegan con teclado.

Qué hace tabindex

El atributo tabindex permite alterar el orden natural del foco. Puede hacer que un elemento no interactivo pueda recibir el foco, puede retirar un elemento interactivo del orden de tabulación y también puede reorganizar el orden en el que se recorren los elementos de la página.
Su valor es numérico. Cuando se utiliza tabindex=»-1″, el elemento puede recibir el foco mediante JavaScript, pero no queda incluido en la navegación secuencial con la tecla Tab. Cuando se utiliza tabindex=»0″, el elemento entra en el orden de tabulación respetando la posición que ocupa en el código HTML. Cuando se utiliza un valor positivo, como tabindex=»1″ o tabindex=»2″, se fuerza un orden de navegación distinto al orden natural del documento.
En la práctica, los valores positivos suelen ser una mala señal. Si el orden de foco no coincide con el orden visual o lógico de la página, lo correcto normalmente no es añadir números para reconstruir artificialmente la navegación. Lo adecuado es revisar la estructura del HTML y utilizar CSS para ajustar la presentación visual cuando sea necesario.

<a href="/inicio">Inicio</a>
<div tabindex="0">Contenido desplazable</div>
<a href="/contacto">Contacto</a>

En este ejemplo, el div entra en el orden de tabulación en el lugar que ocupa dentro del documento. Esto puede ser correcto si ese contenedor tiene algún comportamiento interactivo real. Pero si se trata solo de un bloque de texto, añadirlo al foco puede introducir ruido innecesario en la navegación.

El foco no debe sustituir a la semántica

Una regla sencilla para evaluar el uso de tabindex consiste en preguntarse si el elemento debería ser interactivo. Si se necesita un botón, se debe utilizar un elemento button. Si se necesita un enlace, se debe utilizar un enlace. Si se necesita un campo de formulario, se debe utilizar el control correspondiente.

Crear un botón con un div y añadirle tabindex=»0″ no convierte ese elemento en un botón completo. Puede recibir el foco, pero no incorpora automáticamente el comportamiento esperado con teclado, la semántica adecuada ni la comunicación correcta con los productos de apoyo. En muchos casos, ese tipo de solución obliga a reproducir manualmente características que HTML ya ofrece de forma nativa.

La accesibilidad no consiste solo en que algo pueda recibir el foco. También importa qué anuncia el lector de pantalla, qué teclas activan el componente, cómo se informa del estado, cómo se integra en el flujo del documento y si la interacción coincide con lo que la persona usuaria espera.

Cuándo puede ser útil tabindex=”-1”

El valor -1 resulta útil cuando un elemento no debe aparecer en la navegación normal con Tab, pero necesita recibir el foco en una situación concreta. Un caso habitual es un mensaje de error después de enviar un formulario.

Si una persona envía un formulario y existen errores, mover el foco al resumen de errores puede ayudar a comprender qué ha ocurrido. Para una persona que navega con teclado, evita tener que volver a recorrer toda la página hasta localizar el problema. Para una persona que utiliza lector de pantalla, permite que el mensaje sea anunciado en el momento adecuado.

<div id="errores" tabindex="-1">
Hay errores en el formulario. Revisa los campos indicados.
</div>

Después, mediante JavaScript, se puede enviar el foco a ese elemento cuando se detecten errores.

document.getElementById('errores').focus();

Este patrón también puede ser útil en ventanas modales, paneles que se abren dinámicamente o zonas de la interfaz que aparecen como consecuencia de una acción de la persona usuaria. El objetivo no es añadir más paradas al teclado, sino colocar el foco en un punto lógico cuando cambia el contexto de interacción.

Cuándo puede ser útil tabindex=“0”

El valor 0 debe utilizarse con más cuidado. Su función es incorporar un elemento al orden natural de tabulación. Esto puede tener sentido cuando existe una zona que debe poder recibir interacción con teclado, pero que por defecto no forma parte del orden de foco.

Un ejemplo frecuente son los contenedores con desplazamiento interno creados con CSS mediante overflow.

Si un bloque tiene contenido desplazable y una persona solo utiliza el teclado, necesita poder situar el foco en esa región para desplazarse por ella. En ese caso, tabindex=»0″ puede hacer que el contenedor sea alcanzable saltando con la tecla de tabulador.

<section aria-labelledby="condiciones" tabindex="0" style="overflow: auto; max-height: 12rem;">
<h2 id="condiciones">Condiciones de uso</h2>
<p>Texto de las condiciones de uso...</p>
</section>

En este tipo de componentes no es suficiente con hacer que el contenedor reciba el foco. También conviene proporcionar una etiqueta accesible y una estructura semántica clara. Una persona que usa lector de pantalla debe poder entender qué contiene esa región y por qué ha llegado hasta ella.

Los valores positivos rompen expectativas

Los valores positivos de tabindex permiten definir un orden de tabulación independiente del orden del documento.

Esta práctica debe realizarse con mucho cuidado ya que es muy sencillo romper el orden coherente y comprensible del orden de tabulación.

Cuando el foco salta de una parte a otra de la página en un orden inesperado, la interfaz se vuelve más difícil de comprender. La persona que navega con teclado puede perder la relación entre la posición visual, la estructura del contenido y el punto real de interacción. Para quien utiliza lector de pantalla, esa separación entre orden del código, orden visual y orden de foco puede resultar especialmente confusa.

<div tabindex="3">Tercer elemento</div>
<div tabindex="1">Primer elemento</div>
<div tabindex="2">Segundo elemento</div>

Este código fuerza una secuencia que no coincide con el orden del documento. Si el diseño necesita mostrar visualmente los elementos de otra manera, CSS debería encargarse de la presentación. El HTML debe conservar un orden lógico, comprensible y coherente.

Componentes personalizados

Existen componentes interactivos que no tienen una equivalencia directa en HTML nativo. Un sistema de pestañas, determinados widgets complejos o algunos controles de aplicación pueden requerir una gestión específica del foco.

En estos casos, tabindex puede formar parte de la solución, pero no debe utilizarse de forma aislada. Un patrón de pestañas accesible, por ejemplo, puede necesitar que la pestaña activa tenga tabindex=»0″ y que las pestañas inactivas tengan tabindex=»-1″ para permitir una navegación controlada con flechas y una gestión correcta del foco.

Revisar el uso de tabindex

Una revisión de accesibilidad debería incluir la búsqueda de usos de tabindex en el código. Cada aparición merece una comprobación concreta. Si un elemento nativo interactivo tiene tabindex=»0″, probablemente no lo necesita. Si un elemento no interactivo tiene tabindex=»0″, conviene revisar si realmente debe recibir el foco. Si aparece un valor positivo, normalmente debería corregirse el orden del documento en lugar de mantener ese valor.

También es importante revisar los casos con tabindex=»-1″. No son necesariamente incorrectos, pero deben estar asociados a una gestión del foco clara. Si ningún script envía el foco a ese elemento, puede que el atributo no esté cumpliendo ninguna función.

Las herramientas automáticas pueden localizar estos casos, pero la decisión final requiere criterio humano. Una herramienta puede indicar que existe un tabindex, pero no siempre puede determinar si su uso responde a una necesidad real de interacción.

Una herramienta que debe usarse con criterio

tabindex no es un atributo prohibido. Es una herramienta potente para gestionar el foco en situaciones concretas. Pero precisamente por afectar directamente a la navegación con teclado, debe utilizarse con prudencia.

En una página bien estructurada, la mayor parte del orden de tabulación debería venir dado por el propio HTML. Los enlaces, botones y campos de formulario ya tienen comportamiento accesible cuando se usan correctamente. Añadir tabindex sin una razón clara puede introducir barreras donde antes no las había.

365 Days iOS Accessibility

El proyecto 365 Days iOS Accessibility es una iniciativa orientada a compartir conocimiento práctico sobre accesibilidad en aplicaciones iOS. El proyecto consiste en publicar, durante un año, pequeñas piezas de contenido relacionadas con técnicas, recomendaciones y detalles que pueden ayudar a crear aplicaciones más accesibles.

La accesibilidad en iOS suele asociarse de forma inmediata con VoiceOver, pero el proyecto muestra que el campo es mucho más amplio. En sus publicaciones aparecen temas relacionados con SwiftUI, UIKit, visionOS, accesibilidad en Apple Watch, atajos de teclado, Voice Control, Full Keyboard Access, orientación de pantalla, texto alternativo, prioridades de orden de lectura o adaptación de interfaces a tamaños grandes de texto.

Este enfoque resulta especialmente interesante porque reduce la distancia entre la teoría y la práctica. Muchas veces la accesibilidad se presenta como una obligación general, como una fase de revisión o como una lista de comprobaciones al final del desarrollo. Sin embargo, en el trabajo diario de una aplicación móvil, las barreras suelen aparecer en decisiones pequeñas como un botón sin etiqueta clara, un orden de navegación incorrecto, un gesto sin alternativa, una pantalla que no soporta orientación horizontal, un texto que no crece correctamente o una imagen compartida sin descripción.

El valor de este proyecto está precisamente en señalar esos detalles. No sólo explica que una aplicación debe ser accesible, sino de mostrar cómo se puede mejorar una parte concreta de la interfaz, una interacción concreta o un componente concreto. En una publicación se recuerda, por ejemplo, la importancia de permitir que las imágenes compartidas por los usuarios incluyan texto alternativo para que pueda utilizarse como etiqueta de accesibilidad. En otra se habla de la necesidad de soportar ambas orientaciones cuando sea posible y de evitar obligar al usuario a girar el dispositivo.

Otro aspecto importante es la relación entre distintas herramientas de apoyo. Una aplicación con buen soporte para VoiceOver suele tener una base más sólida para otras formas de interacción, pero eso no significa que todo quede resuelto automáticamente. El proyecto recuerda, por ejemplo, que en Apple Watch puede ser útil implementar acciones rápidas para AssistiveTouch cuando existe una acción principal clara. Este tipo de observaciones ayudan a entender que la accesibilidad no depende de una única tecnología, sino de la capacidad de la interfaz para ofrecer caminos alternativos para la persona usuaria.

AraWrite, una herramienta de ayuda a la discapacidad cognitiva

AraWrite es una aplicación de libre distribución presentada en Aragón como herramienta de accesibilidad cognitiva vinculada a ARASAAC. Su función principal consiste en adaptar textos a pictogramas de forma semiautomática, apoyándose en inteligencia artificial y en el ecosistema gráfico de ARASAAC.

Además de traducir texto a pictogramas, esta operación se realiza de forma automática simplificando el proceso para las personas que no se han especializado en la discapacidad cognitiva.

Los beneficios de AraWrite impactan en personas con discapacidad intelectual, con trastornos del lenguaje, con autismo, con dificultades de comprensión lectora, con necesidades de apoyo en contextos educativos o comunitarios. En muchos casos, las soluciones de accesibilidad para los perfiles de discapacidad cognitiva eran insuficientes debido a la falta de profesionales de la accesibilidad especializados en este perfil de discapacidad.

Proyecto Eclipse inclusivo

La astronomía suele presentarse como una ciencia profundamente visual. Las barreras de accesibilidad más comunes consisten en el uso de fotografías del cielo, mapas estelares, telescopios, imágenes espectaculares del Sol, la Luna o las galaxias. Esto provoca que muchas personas con discapacidad visual no puedan acercarse a esta ciencia en igualdad de condiciones. Las nuevas tecnologías están siendo utilizadas para reducir esas barreras de accesibilidad y hacer que la astronomía sea más inclusiva y accesible. Dentro de esas iniciativas encontramos al proyecto Eclipse inclusivo.
Este proyecto nace de una iniciativa de cultura científica impulsada desde el Instituto de Ciencias del Espacio del CSIC con motivo del eclipse total de Sol que recorrerá la península ibérica el 12 de agosto de 2026. 

El proyecto busca aprovechar un acontecimiento astronómico excepcional para acercar la ciencia al público general durante el año previo, y hacerlo desde una perspectiva inclusiva. Su lema es Un eclipse, muchas formas de vivirlo.

El proyecto trabaja para que las actividades relacionadas con este fenómeno sean accesibles para personas ciegas o con discapacidad visual, pero también que lleguen a público escolar y a colectivos vulnerables.

Una de las piezas más llamativas del proyecto es Eclipse compartido, una línea de trabajo orientada a facilitar que las personas con discapacidad visual puedan experimentar el eclipse mediante actividades inclusivas y herramientas adaptadas. Entre esas herramientas destaca LightSound, un dispositivo basado en tecnología Arduino que transforma la intensidad de la luz en sonido. Mientras la Luna cubre el Sol, la variación lumínica se convierte en un cambio audible. El eclipse deja de ser solo algo que se mira para convertirse también en algo que se escucha.

Además de la sonificación, el proyecto contempla talleres educativos sobre el Sol y los eclipses con modelos táctiles y actividades adaptadas, en colaboración con el Centro de Recursos Educativos de la ONCE en Barcelona.

El ICE-CSIC también ha publicado una presentación detallada de la iniciativa en su sitio web.

Proyecto BlindTex para matemáticas accesibles con LaTeX

El proyecto BlindTex es un proyecto orientado a convertir expresiones matemáticas escritas en LaTeX a lenguaje natural, con el objetivo de facilitar su lectura mediante productos de apoyo como lectores de pantalla y dispositivos braille. La idea es la de transformar una sintaxis pensada para composición matemática en una salida más cercana al lenguaje hablado para recorrer el contenido y entender y recorrer con mayor facilidad.

El proyecto se presenta como una herramienta de accesibilidad especializada en la conversión de ecuaciones escritas en LaTeX a lenguaje natural. Su enfoque está dirigido a reducir barreras de acceso al conocimiento científico y técnico para personas ciegas o con baja visión.

LaTeX es uno de los formatos más utilizados para escribir fórmulas matemáticas, artículos científicos, apuntes técnicos y documentación universitaria.

Un contenido puede estar bien escrito para ser renderizado visualmente. Pero eso no implica que sea fácil de interpretar de forma auditiva. Una expresión como una fracción, una raíz o una potencia puede volverse ambigua o muy difícil de seguir si no se expresa con una estructura verbal clara. BlindTex trabaja justamente sobre ese problema.

La herramienta no se limita a “leer caracteres”, sino que se intenta trasladar la estructura matemática a una forma verbal. En la documentación del repositorio se muestra como ejemplo la conversión de una fracción escrita en LaTeX a una salida como fracción 2 sobre 3 más 4 finFracción, dando una idea más clara de la jerarquía de la expresión matemática.

Instalación y uso

BlindTex puede instalarse desde Python con usando pip y se debe ejecutar desde la terminal.

El proyecto incluye una web pública de presentación y una aplicación web para probar conversiones, lo que ayuda a acercar la herramienta tanto a desarrolladores como a potenciales usuarios finales o docentes interesados en experimentar con ella.

Software libre y posibilidad de colaboración

BlindTex se distribuye como proyecto de código abierto bajo licencia GPL-3.0 y mantiene su código en GitHub.

Accessible stopwatch para MacOS: simple, útil y accesible

Ya está disponible en la MacAppStore la última aplicación de Tyflos Accessible Software. Esta aplicación es Accessible stopwatch.

Esta app está diseñada para medir el tiempo de forma rápida, clara y totalmente accesible. Perfecta para contabilizar cuánto tardas en completar una tarea, controlar el tiempo de trabajo de un equipo o llevar el seguimiento de cualquier actividad en la que necesites un cronómetro sencillo y fiable.

Esta aplicación nace de la necesidad concreta de tener una app disponible en MacOS para controlar el tiempo invertido en completar ciertas tareas pero buscando no ser intrusiva y no crear barreras cognitivas y solucionar otras carencias de accesibilidad en apps de este tipo.

Puedes descargar esta app de la MacAppStore.