Ley 11/2023Reglamento EAA (UE) 2019/882WCAG 2.1 AA

Análisis técnico detallado

Esta página está pensada para perfiles técnicos: equipos de desarrollo, responsables de producto, agencias y consultoras. Si solo necesitas saber qué hacer, ve directamente a Si tienes una empresa, ¿qué hacer?

Marco de análisis

Cada función del widget (overlay) se evalúa contra dos preguntas:

  1. ¿Hace lo que dice que hace? (¿Es técnicamente posible?)
  2. ¿Cubre algún SC concreto de WCAG 2.1 AA? (Si no, no aporta nada al cumplimiento legal).

Las funciones se clasifican en cuatro categorías: falsas, insuficientes, redundantes y no son requisito de WCAG.

8.1. Botón "Hacer que el sitio web cumpla con WCAG"

Categoría: falsa

Es la afirmación literal por la que la FTC sancionó a accessiBe.

Un toggle no puede cumplir un estándar técnico que requiere modificaciones estructurales en el código fuente. Algunos SC que un widget no puede satisfacer:

  • SC 1.3.1 Información y relaciones: requiere semántica HTML correcta.
  • SC 2.4.6 Encabezados y etiquetas: requiere encabezados descriptivos y bien anidados.
  • SC 4.1.2 Nombre, función, valor: requiere que cada componente de UI exponga su nombre, rol y estado al árbol de accesibilidad.
  • SC 1.3.5 Identificación del propósito de los campos: requiere atributos autocomplete correctos en formularios.

Ninguno se puede arreglar desde fuera del código fuente.

8.2. "Perfiles" de discapacidad

Perfil de ceguera

Categoría: falsa y potencialmente contraproducente

Las personas ciegas usan lectores de pantalla profesionales (JAWS, NVDA, VoiceOver, TalkBack) que tienen meticulosamente configurados. Activar un "perfil de ceguera" en un widget puede:

  • Modificar el DOM de formas que confundan al lector de pantalla del usuario.
  • Cambiar atajos de teclado que ya conoce.
  • Sobrescribir el orden de tabulación con uno propio.

Lo que WCAG pide es compatibilidad con tecnologías de asistencia existentes (SC 4.1.2), no que el sitio incorpore su propio mecanismo paralelo.

Perfil de discapacidad visual

Categoría: redundante

Las personas con baja visión ya disponen de: zoom del sistema operativo, zoom del navegador (Ctrl + rueda), lupas integradas en el SO, configuraciones globales de tamaño de texto.

Lo que WCAG sí exige está en SC 1.4.4 Cambio de tamaño del texto y SC 1.4.10 Reajuste. Esto se cumple con CSS responsive correcto, no con un widget.

Perfil de daltonismo

Categoría: redundante e insuficiente

Los SO modernos incluyen filtros de color para protanopia, deuteranopia y tritanopia. Y lo que WCAG exige es que el color no sea el único medio para transmitir información (SC 1.4.1) y que el texto tenga ratio de contraste mínimo de 4.5:1 (SC 1.4.3) y los componentes de UI un ratio mínimo de 3:1 (SC 1.4.11). Un widget no arregla un gráfico que distingue datos solo por color rojo/verde.

Perfil de epilepsia

Categoría: insuficiente y peligrosa por dar falsa sensación de seguridad

El widget aplica colores más opacos. Pero no detiene vídeos ni animaciones embebidas que puedan contener contenido parpadeante.

WCAG SC 2.3.1 Umbral de tres destellos prohíbe contenido que parpadee más de 3 veces por segundo. Si tu web tiene un vídeo con parpadeo problemático, el "perfil de epilepsia" no lo detectará ni lo bloqueará. Una persona con fotosensibilidad puede sufrir una crisis igualmente.

Perfil de TDAH / Aprendizaje / Mayor

Categoría: no es requisito de WCAG

WCAG no tiene SC categorizados por "tipo de persona". Tiene SC sobre comportamientos concretos del sitio:

  • SC 2.2.2 Pausar, detener, ocultar: todo movimiento que dure más de 5 segundos debe poder pausarse.
  • SC 3.1.5 Nivel de lectura (AAA): usar lenguaje claro cuando sea posible.
  • SC 3.3.4 Prevención de errores: en operaciones legales, financieras o de envío de datos, permitir reversión, comprobación o confirmación.
  • SC 3.3.5 Ayuda (AAA): disponibilidad de ayuda contextual.

Estos requisitos se cumplen rediseñando contenido y flujos. Un toggle no es accesibilidad cognitiva.

Perfil de dislexia

Categoría: no es requisito de WCAG

WCAG no exige una tipografía concreta. Lo que sí tiene es SC 1.4.12 Espaciado del texto, que requiere que el contenido siga siendo usable cuando el usuario aplica: altura de línea mínima de 1.5 veces el tamaño de letra, espacio entre párrafos mínimo de 2 veces el tamaño de letra, espacio entre letras de al menos 0.12 veces el tamaño de letra, espacio entre palabras de al menos 0.16 veces el tamaño de letra.

Esto se logra con CSS bien escrito que no se rompa al recibir esas overrides.

8.3. Ajustes de navegación

"Adaptación al lector de pantalla"

Categoría: falsa o contraproducente

Si tu HTML no está bien estructurado, el widget no puede arreglarlo. Si lo está, el widget no es necesario. Y en cualquier caso, alterar el DOM "para ayudar" interfiere con el lector de pantalla que la persona ya tiene configurado.

Navegación por teclado mejorada

Categoría: redundante o insuficiente

WCAG SC 2.1.1 Teclado exige que toda la funcionalidad sea operable solo con teclado. SC 2.4.3 Orden del foco exige orden de tabulación lógico. SC 2.4.7 Foco visible exige indicador visible. WCAG 2.2 añade SC 2.4.11 Foco no oculto (mínimo).

Estos SC se cumplen escribiendo HTML semántico y CSS que no oculte el foco. Un widget no convierte un <div onclick> en algo focalizable por teclado de forma fiable.

Navegación por números

Categoría: no es requisito de WCAG

Los lectores de pantalla ya proporcionan navegación eficiente: por encabezados, por enlaces, por regiones (landmarks ARIA), por listas. Un sistema de numeración propietario es redundante e inconsistente.

8.4. Lectura y voz

Lector de texto integrado

Categoría: redundante

Windows: Narrador (integrado), NVDA (gratuito). macOS / iOS: VoiceOver. Android: TalkBack. Edge: lectura inmersiva. Las personas que necesitan TTS ya lo tienen configurado a nivel de SO.

Comandos de voz

Categoría: redundante

Software profesional: Dragon NaturallySpeaking, Voice Control de Windows/macOS, Voice Access de Android. Funcionan en cualquier aplicación.

8.5. Ajustes de color

Categoría general: redundante

Lo que WCAG exige por defecto:

  • SC 1.4.3 Contraste (mínimo): ratio mínimo de 4.5:1 para texto normal, 3:1 para texto grande.
  • SC 1.4.11 Contraste no textual: ratio mínimo de 3:1 para componentes de UI y elementos gráficos significativos.
  • SC 1.4.1 Uso del color: el color no es el único medio para transmitir información.

Si tu sitio cumple por defecto, los toggles del widget son innecesarios. Si no cumple, el widget no resuelve el incumplimiento.

Los usuarios que personalizan colores tienen alternativas universales: Modo Alto Contraste de Windows, inversión de colores a nivel de SO, user stylesheets, extensiones como Dark Reader.

8.6. Ajustes de contenido

Tamaño y espaciado de fuente

Categoría: redundante

Cubierto por SC 1.4.4 y SC 1.4.12, que se cumplen en el CSS base.

Cursor grande / cursor de color

Categoría: redundante

Configuración nativa de SO.

Lupa

Categoría: redundante

Magnificadores integrados en SO. Pellizco-zoom en móvil (que SC 1.4.4 y SC 1.4.10 te obligan a no bloquear: nada de user-scalable=no ni maximum-scale=1 en el viewport meta).

Diccionario integrado

Categoría: redundante

macOS/iOS define con tres dedos o Ctrl+Cmd+D. Android: pulsación larga. No es requisito de WCAG.

Teclado virtual

Categoría: redundante

Windows (osk.exe), macOS (Visor de teclado), iOS y Android nativos. Los del SO están además optimizados para tecnologías de asistencia. Los del widget, normalmente no.

"Bloquear parpadeos"

Categoría: insuficiente

Pausa algunas animaciones CSS, pero no toca vídeo embebido ni GIFs animados. Cumplir SC 2.3.1 exige no incluir contenido parpadeante desde el diseño y respetar prefers-reduced-motion.

Descripción automática de imágenes con IA

Categoría: insuficiente para SC 1.1.1

WCAG SC 1.1.1 Contenido no textual exige que el texto alternativo cumpla un propósito equivalente. Una IA puede generar "persona sonriendo" cuando lo correcto es "directora de RRHH presentando los resultados anuales". Y, peor, puede añadir descripciones a imágenes decorativas que deberían tener alt="" (vacío) según el propio SC.

El alt text correcto requiere juicio humano y contexto editorial. Es una decisión, no una transcripción visual.

"Resaltar enlaces" / "Resaltar títulos"

Categoría: síntoma de incumplimiento previo

WCAG SC 1.4.1 y, en WCAG 2.2, SC 2.4.13 Apariencia del foco exigen que los enlaces sean distinguibles del texto que los rodea sin depender solo del color. Si tu sitio necesita un widget para "resaltar" enlaces, probablemente no estás cumpliendo el SC de base.

"Guía de lectura" / "Foco de lectura"

Categoría: no es requisito de WCAG

Es una preferencia. Quien la necesita usa extensiones de navegador propias.

8.7. Resumen consolidado

Resumen consolidado: función del widget, categoría y SC afectados
Funcionalidad del widget Categoría SC implicados (no satisfechos)
"Cumplir con WCAG" toggleFalsa1.3.1, 2.4.6, 4.1.2 (entre otros)
Perfil cegueraFalsaInterfiere con 4.1.2 real
Perfil epilepsiaInsuficiente2.3.1
Descripción imágenes IAInsuficiente1.1.1
Perfil discapacidad visualRedundante1.4.4, 1.4.10 (en CSS)
Perfil daltonismoRedundante1.4.1, 1.4.3 (en CSS)
Lector de textoRedundanteNinguno
Comandos de vozRedundanteNinguno
Ajustes de colorRedundante1.4.3, 1.4.11 (en CSS)
Lupa, cursor, teclado virtual, diccionarioRedundanteNinguno
Perfil TDAH/Mayor/Aprendizaje/DislexiaNo es WCAG2.2.2, 1.4.12, 3.3.4 (de base)
Navegación por númerosNo es WCAGNinguno
Guía de lecturaNo es WCAGNinguno
Bloquear parpadeosInsuficiente2.3.1

Referencias técnicas

Fuentes de esta página