Addaw, ir a inicio Donar

Técnica CSS WCAG 2.2

C40Crear un indicador del foco de dos colores para garantizar un contraste suficiente con todos los componentes

En resumen

Esta técnica propone dibujar el indicador del foco del teclado con dos bandas de color muy contrastadas entre sí (una clara y otra oscura, con relación de contraste 9:1 o más), de modo que al menos una de ellas tenga siempre contraste 3:1 con cualquier fondo liso. Así se evita definir estilos de foco distintos por sección y beneficia a quienes navegan con teclado o tienen baja visión (criterios 1.4.11 y 2.4.13).

Ejemplo práctico

Sirve para webs con franjas de distintos colores (portadas de ayuntamientos, páginas de producto, landings): un único estilo de foco de dos colores que se ve sobre fondos claros, de color y oscuros sin crear una clase para cada sección.

Así no: Foco de un solo color que desaparece en algunas franjas

Se usa un contorno de 3 px en lila #744E9A para todos los enlaces. Sobre la franja blanca se ve (6,4:1), pero sobre la franja lila tiene un contraste de 1:1 y sobre la oscura #0B2239 de 2,5:1, por lo que el foco no se distingue en dos de las tres secciones.

<style>
  .franja { padding: 16px; }
  .clara { background: #FFFFFF; color: #412c56; }
  .lila { background: #744E9A; color: #FFFFFF; }
  .oscura { background: #0B2239; color: #FFFFFF; }
  .franja a { color: inherit; font-weight: bold; }
  a:focus-visible { outline: 3px solid #744E9A; outline-offset: 3px; }
</style>
<div class="franja clara"><a href="#">Ver trámites en línea</a></div>
<div class="franja lila"><a href="#">Pedir cita previa</a></div>
<div class="franja oscura"><a href="#">Contactar con el ayuntamiento</a></div>
Captura de pantalla del ejemplo incorrecto: Foco de un solo color que desaparece en algunas franjas
Así se ve el ejemplo incorrecto.

La demostración contiene, a propósito, el error de accesibilidad que se explica.

Así sí: Foco de dos colores con outline y box-shadow

El indicador combina una banda interior blanca de 2 px (outline) y una exterior #0B2239 de 2 px (box-shadow). Entre sí tienen un contraste de 16,1:1, mayor que 9:1, así que una de las dos bandas alcanza siempre 3:1 con cualquier fondo liso. Al mantener el outline, el foco sigue viéndose en el modo de colores forzados, que elimina las sombras.

<style>
  .franja { padding: 16px; }
  .clara { background: #FFFFFF; color: #412c56; }
  .lila { background: #744E9A; color: #FFFFFF; }
  .oscura { background: #0B2239; color: #FFFFFF; }
  .franja a { color: inherit; font-weight: bold; }
  a:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 0; box-shadow: 0 0 0 4px #0B2239; }
</style>
<div class="franja clara"><a href="#">Ver trámites en línea</a></div>
<div class="franja lila"><a href="#">Pedir cita previa</a></div>
<div class="franja oscura"><a href="#">Contactar con el ayuntamiento</a></div>

Pruébelo aquí:

Cómo comprobarlo

Teclado

  1. Recorrer con Tab los componentes situados sobre cada uno de los fondos de la página (claros, de color y oscuros).
  2. Comprobar que en todos ellos se distingue al menos una de las dos bandas del indicador.

Herramientas del navegador

  1. Abrir las herramientas de desarrollo (F12), seleccionar un enlace y activar :focus-visible con el botón :hov del panel Estilos.
  2. Comprobar en Calculado (Computed) los colores y grosores de outline y box-shadow: cada banda debe tener al menos 2 px y los dos colores, entre sí, una relación de 9:1 o más.
  3. En el panel Renderizado (Rendering), emular forced-colors: active y comprobar que el indicador sigue visible aunque desaparezca la sombra.

Validación automática

  1. axe DevTools, WAVE y Lighthouse no analizan los estilos de foco ni su contraste, por lo que no detectan un indicador que se pierde sobre un fondo concreto.
  2. La relación entre los dos colores se calcula a mano con un analizador de contraste, y la visibilidad se revisa sobre cada fondo real de la página, sobre todo si hay imágenes o degradados.

Errores frecuentes en auditorías

  • Usar solo box-shadow con outline: none: en el modo de colores forzados de Windows la sombra desaparece y no queda indicador.
  • Elegir dos colores con poco contraste entre sí (por ejemplo, lila y azul corporativos), lo que no garantiza el 3:1 sobre cualquier fondo.
  • Bandas de 1 px que no alcanzan el grosor mínimo, o un outline-offset negativo que dibuja el indicador dentro del componente, sobre una imagen o un degradado.
  • Indicadores recortados por overflow: hidden en carruseles y tarjetas, donde solo queda visible una de las bandas en parte del perímetro.

Técnica completa: traducción al español del texto del W3C

Aplicabilidad

CSS.

Descripción

El objetivo de esta técnica es crear un indicador del foco de dos colores que tenga un contraste suficiente con cualquier color de fondo liso. Esta técnica puede evitar la necesidad de usar varias clases para garantizar un contraste suficiente del indicador del foco cuando se muestra sobre fondos distintos.

Los autores pueden aplicar esta técnica en sitios que usan diversos colores de fondo. Aunque es posible crear indicadores del foco de distintos colores para distintas partes de una página, esto puede llevar mucho tiempo y es fácil pasar por alto algunos componentes. Sin embargo, si el indicador del foco utiliza dos colores muy contrastados entre sí (un color claro y un color oscuro), puede reutilizarse el mismo indicador, ya que al menos uno de los dos colores tendrá siempre contraste suficiente con cualquier color de fondo.

Siempre que los dos colores del indicador tengan entre sí una relación de contraste de al menos 9:1, se garantiza que al menos uno de los dos colores alcanzará un contraste de 3:1 con cualquier color de fondo liso.

Esta técnica solo garantiza que el indicador superará la comprobación si todo el indicador se dibuja sobre el fondo, no dentro del contorno del componente enfocado, y si todo el fondo situado detrás del indicador es un único color liso. Por ejemplo, si el fondo es una imagen o un degradado, o si el indicador se superpone parcialmente a otro componente de la interfaz de usuario, puede que siga siendo necesario comparar el indicador píxel a píxel con el fondo.

En CSS, los indicadores de dos colores pueden implementarse combinando las propiedades outline y box-shadow con las pseudoclases :focus o :focus-visible.

Evite establecer outline: none para usar box-shadow por sí solo. Los agentes de usuario suelen suprimir la propiedad box-shadow en los modos de colores forzados, por lo que los autores deberían evitar depender únicamente de box-shadow para implementar los indicadores del foco. Si se necesita un estilo basado solo en box-shadow, considere combinarlo con una propiedad outline: 2px transparent solid para garantizar la compatibilidad con los modos de colores forzados.

Ejemplos

Este ejemplo muestra una implementación sencilla en la que los estilos de foco se aplican a todos los componentes enfocables. Al usarlo en un sitio web más complejo, habría que asegurarse de que estos estilos no quedan anulados por otros estilos más específicos.

Un indicador grueso de dos colores

En este ejemplo, el indicador consta de dos bandas de color liso. Como cada banda de color tiene 2 píxeles CSS de grosor, cualquiera de las dos bandas es lo bastante grande para cumplir por sí sola el requisito de tamaño mínimo del indicador. Siempre que uno de los dos colores tenga un contraste de cambio de 3:1 con los píxeles situados detrás y alrededor del indicador del foco, el indicador cumplirá tanto el criterio de conformidad Aspecto del Enfoque como el de Contraste no textual.

*:focus {
	/* inner indicator */
	outline: 2px #F9F9F9 solid;
	outline-offset: 0;
	/* outer indicator */
	box-shadow: 0 0 0 4px #193146;
}

Ejemplo práctico de un indicador grueso de dos colores

Pruebas

Procedimiento

Para cada componente de la interfaz de usuario enfocable:

  1. Comprobar que los dos colores del indicador del foco tienen entre sí una relación de contraste de 9:1 o mayor.
  2. Comprobar que cada banda de color tiene al menos 2 píxeles CSS de grosor.
  3. Comprobar que el indicador solo aparece sobre un único color de fondo liso a la vez.

Resultados esperados

  • Las comprobaciones n.º 1, n.º 2 y n.º 3 son verdaderas.

Recursos

Cómo lo comprobamos en ADDAW

En las auditorías de accesibilidad de ADDAW revisamos cada criterio de conformidad siguiendo este catálogo de técnicas: comprobamos si la web aplica una técnica suficiente y documentamos cada fallo común con capturas y el código afectado, para que el equipo de desarrollo sepa exactamente qué corregir. Los informes siguen la metodología del Observatorio de Accesibilidad y la norma UNE-EN 301 549.

Solicitar una auditoría

Fuente y licencia

Traducción al español, no oficial, realizada por ADDAW a partir de la técnica C40 del documento «Techniques for WCAG 2.2» del W3C (versión del repositorio público del W3C a 22/10/2026). Copyright © W3C® (MIT, ERCIM, Keio, Beihang). Se publica conforme a la licencia de documentos del W3C. El texto normativo de referencia es el original en inglés; si detecta un error en la traducción, escríbanos.

Financiado por la unión europea Gobierno de españa red.es Plan de recuperación transformación y resilencia kit digital