Mostrando entradas con la etiqueta accesibilidad baja visión. Mostrar todas las entradas
Mostrando entradas con la etiqueta accesibilidad baja visión. Mostrar todas las entradas

martes, 25 de marzo de 2025

Accessible Perceptual Contrast Algorithm (APCA) ¿Debemos comenzar a utilizar ya el algoritmo APCA para medir el contraste? ¿De qué herramientas disponemos?

Captura de las herramientas APCA Contrast Calculator y Bridge-PCA Contrast Calculator

Accessible Perceptual Contrast Algorithm (APCA) es una nueva forma de medir el contraste para contenido textual y no textual en pantallas autoiluminadas.

El modelo SACAM (S-Luv Accessible Color Appearance Model), anteriormente SAPC, es un modelo avanzado de medición del contraste que tiene en cuenta la percepción visual humana del contraste y los múltiples factores implicados, como el tamaño, el peso, el relleno o el espaciado de la fuente; la adaptación de la luz; así como la luminancia y los colores CSS utilizados, basándose en una pantalla sRGB con un observador estandarizado.

El código básico de APCA es una reducción de este modelo más grande. Utiliza una estimación lo suficientemente simple para automatizarse, pero que mejora la legibilidad y ofrece mayor flexibilidad en el diseño.

APCA ha sido creado por Andrew Somers, líder de investigación del subgrupo Visual Contrast del grupo de trabajo W3C Accessibility Guidelines Working Group’s Silver (WCAG 3). APCA es el método de contraste candidato para incluirse en el futuro estándar de las WCAG 3, y está siendo evaluado actualmente como beta pública.

APCA y las WCAG 3 aún están en desarrollo y todavía no son recomendaciones oficiales del W3C. ¿Debemos comenzar a utilizar ya el algoritmo APCA para medir el contraste? ¿De qué herramientas disponemos? El objetivo de este artículo es dar respuesta a estas preguntas.

Mis fuentes para elaborar este artículo han sido, por una parte, los dos magníficos artículos de Andrew Somers:

Y, por otra parte, toda la documentación del algoritmo, disponible en:

El artículo ha sido elaborado sin la ayuda de herramientas IA.

Nota mayo 2026 sobre APCA y las WCAG 3: Contraste WCAG3 a partir de abril de 2026

Índice

Introducción sobre la visión y el color

En el artículo “The Realities And Myths Of Contrast And Color” Andrew Somers nos da una lección magistral sobre la visión humana y la percepción del color. Resumo a continuación aquellos aspectos que me parecen relevantes para comprender el nuevo algoritmo APCA.

La corteza visual primaria, que es la primera área de la corteza cerebral que procesa la información visual, analiza los contrastes de claridad y oscuridad, detectando bordes y detalles finos, además de realizar un procesamiento inicial del color. Posteriormente, otras áreas refinan esta información y procesan de manera más especializada distintos aspectos del color, como el tono y la saturación.

Parte de la información visual se dirige al Visual Word Form Area (VWFA), donde se procesan patrones ortográficos y se facilita el reconocimiento de palabras escritas, integrándose luego con áreas del cerebro relacionadas con el lenguaje. Otra información visual sigue vías especializadas, como la detección del movimiento y el reconocimiento de objetos.

La información procesada en el VWFA depende principalmente del contraste de luminancia, por lo que el color juega un papel secundario en el reconocimiento de las palabras escritas. En cambio, el área de reconocimiento de objetos integra la información del color, junto con la forma o la textura, para la discriminación visual.

Hay que destacar que los colores son percepciones que se ven muy afectadas por el contexto. Por ejemplo, en la siguiente imagen hay dos círculos del mismo color amarillo (#D18600), pero los percibimos diferentes por el contexto:

Un círculo amarillo sobre un cuadrado gris claro y sobre un cuadrado gris oscuro. El color amarillo se percibe diferente según el color gris sobre el que se encuentra.

Fuente: The Realities And Myths Of Contrast And Color, Andrew Somers

Nos referimos, por tanto, a una percepción cualitativa y dependiente del contexto.

Por otra parte, nuestra percepción no es lineal. Si tienes 100 fotones de luz y los triplicas, tienes 300 fotones de luz, pero, según Andrew Somers, nuestra visión no percibe ese cambio como una "triplicación", sino como un aumento modesto, lo cual es muy importante para comprender la percepción del contraste.

También es relevante que la percepción visual cambia con la edad. Se necesitan los primeros 20 años de vida para desarrollar la máxima sensibilidad al contraste. Y, a medida que envejecemos, el ojo pierde sensibilidad, especialmente al azul, ya que la óptica del ojo se vuelve más amarilla.

Algunos términos relevantes a tener en cuenta son:

  • La agudeza visual (AV) se relaciona con la capacidad de nuestros ojos para enfocar lo que vemos, lo cual es fundamental para la lectura.
  • La sensibilidad al contraste (SC) es también una medida importante de la salud y el bienestar de nuestro sistema.
  • La deficiencia de la visión del color (CVD), que solemos denominar de forma genérica "daltonismo", afecta al 5% de la población mundial, que es insensible a algunos colores. En los casos más comunes, uno de los tipos de cono no está funcionando como debería o falta por completo.

Si bien la CVD afecta a la capacidad de distinguir algunos colores, la percepción de la luminancia es similar en la visión estándar y en los tipos comunes de CVD. Por lo tanto, en términos de legibilidad, requieren el mismo contraste de luminosidad que la visión estándar.

La única excepción es la combinación de rojo y negro, ya que las personas con formas protán de CVD son insensibles al rojo. Como resultado, perciben un contraste muy bajo entre estos colores, por lo que esta combinación debe evitarse.

Sobre el contraste y sus problemas

Resumo a continuación aquellos aspectos que Andrew Somers explica en sus artículos que me parecen imprescindibles para comprender el contraste y sus problemas.

Existen muchas formas de contraste, pero para la accesibilidad digital nos centramos en el «contraste de luminosidad percibido». Mientras que la luminancia es una magnitud física en el mundo real, la luminosidad es nuestra percepción de ella y está condicionada por el contexto.

La lectura y la legibilidad están muy relacionadas con las diferencias de claridad y oscuridad: los detalles finos de las fuentes requieren un buen contraste de luminancia para que el Visual Word Form Area (VWFA) contribuya al reconocimiento de palabras completas o pares de letras. En cambio, los contrastes de color son más relevantes para el reconocimiento y la categorización de objetos.

Otro aspecto muy importante de la percepción del contraste es que se basa más en la “frecuencia espacial” que en la diferencia entre dos colores. La “frecuencia espacial” se refiere al grosor y tamaño de la fuente y al grosor y separación de sus líneas:

Un gráfico que muestra cómo la sensibilidad al contraste es relativa al tamaño y el peso de la fuente.

Fuente: The Realities And Myths Of Contrast And Color, Andrew Somers

También se deben tener en cuenta los efectos del antialiasing y las técnicas de suavizado de fuentes.

Las pantallas Retina, con alta densidad de píxeles, pueden mostrar texto más nítido; y algunos sistemas o dispositivos están configurados con un antialiasing subpíxel que puede ser más nítido. Sin embargo, si se usa con -webkit-font-smoothing:antialiased;, se reemplazará con un desenfoque suave que perjudica mucho el contraste y la nitidez en las pantallas de resolución estándar con fuentes pequeñas. Por ello, Andrew Somers indica que los diseños deben probarse y visualizarse en monitores de “resolución estándar”.

Para compensar estos factores, el texto pequeño y delgado requiere una diferencia de claridad/oscuridad mucho mayor. Por ejemplo, algunas fuentes de gramaje 100 son tan delgadas que requieren un tamaño superior a 42 px, o incluso más, para poder aplicar técnicas de suavizado de forma segura.

Por último, hay que tener en cuenta las columnas del texto, pues la densidad del texto reduce aún más el contraste.

Algoritmo WCAG frente al nuevo APCA

El algoritmo de contraste de las WCAG 2 no predice el contraste del texto según la percepción humana, lo cual es especialmente evidente con pares de colores oscuros. Como resultado, el contraste WCAG 2 es poco útil para el modo oscuro y para el texto claro en colores saturados.

Gráfico que muestra una comparación de los contrastes mínimos de aprobación para APCA y WCAG 2. Los ejemplos de WCAG 2 se vuelven ilegibles en colores oscuros.

Fuente: APCA. Why APCA as a New Contrast Method?, Andrew Somers

Las directrices de contraste de las WCAG 2 indican una relación de 4,5:1 para fuentes menores de 24 px con grosor 400 (normal), o 18,8 px con grosor 700 (negrita), y de 3:1 para otros contrastes. Si bien esta directriz es fácil de implementar, estos mínimos pueden ser muy insuficientes en algunos casos, y paradójicamente, más de lo necesario en otros, porque se basaron en estudios de la década de los 80.

El nuevo método APCA considera directamente las diferencias perceptuales de claridad/oscuridad del texto con respecto al fondo y genera un valor de "contraste de luminosidad" denominado Lc. A partir de aquí, podemos determinar el tamaño y el grosor mínimos de una fuente para una lectura fluida, y estas predicciones calculadas, en conjunto, pueden guiar nuestras decisiones de diseño.

Esto nos lleva a la idea del «contraste de legibilidad» que hemos comentado: el contraste necesario para un caso de uso particular y el nivel de legibilidad requerido.

Para ello, se definen conceptos como «contraste crítico» y «tamaño crítico», siendo “crítico” el punto en el que aumentar el tamaño o el contraste no mejora la velocidad de lectura ni la comprensión; o «reserva de contraste», definiendo las necesidades de contraste para niveles subfluidos, donde el texto sigue siendo legible, pero no alcanza la máxima velocidad ni la máxima comprensión. Esto es importante, porque en una jerarquía de diseño no todo puede alcanzar el máximo contraste.

Por ejemplo, una columna de texto requiere el mayor contraste para garantizar una legibilidad fluida. Pero un copyright en el pie de foto no necesita tener un contraste tan alto. De hecho, dice Andrew Somers, para mantener un diseño despejado y centrar la atención en el contenido, un copyright debería tener menos contraste: lo suficientemente alto como para leerse si se enfoca, pero lo suficientemente bajo como para no distraer ni desviar la atención del tema principal.

Hay que tener en cuenta que la altura del cuerpo puede tener resultados significativamente diferentes según la familia de fuentes. Por lo tanto, se debería determinar la altura x de las fuentes utilizadas en el diseño y, después, ajustar el tamaño de la fuente con el desplazamiento necesario para lograr el tamaño renderizado deseado.

Por ejemplo, una Verdana tiene una altura X más grande que una Garamond:

Aunque está configurada en el mismo tamaño, la altura x de la tipografía Garamond es mucho menor que la de Verdana.

Fuente: How to make type readable on the web, Michael McBain

Ya hemos comentado que también se deben tener en cuenta el tamaño y el diseño de la fuente porque el antialiasing puede crear problemas.

APCA en detalle

Accessible Perceptual Contrast Algorithm (APCA) está actualmente en evaluación en beta pública y es el método candidato para el contraste en las WCAG 3.

El nuevo modelo difiere de las WCAG 2 en que APCA considera la percepción visual humana, los casos de uso y las características espaciales (peso y tamaño) y proporciona una guía de diseño completa y útil. APCA forma parte del modelo más amplio conocido como SACAM (S-Luv), que tiene en cuenta los nuevos conocimientos de la ciencia de la visión, optimizada específicamente para la legibilidad del texto en pantallas autoiluminadas, basada en la investigación revisada por pares de Whittaker, Bailey, Lovie-Kitchin, G. Legge y otros.

Como ya he indicado, APCA ha sido creado por Andrew Somers como líder de investigación del subgrupo Visual Contrast del grupo de trabajo W3C Accessibility Guidelines Working Group’s Silver (WCAG 3) .

APCA indica el contraste como un valor Lc (contraste de luminosidad) basado en un par de colores y un peso/tamaño de fuente mínimo. Este valor está basado en la percepción, es decir, independientemente de cuán claros u oscuros sean los dos colores, un valor de contraste de Lc 60 representa el mismo contraste de legibilidad percibido en toda la gama de colores disponible.

Esto no ocurre con las WCAG 2, que exageran considerablemente el contraste para colores oscuros, hasta el punto de que una relación de 4,5:1 puede resultar ilegible cuando un color es cercano al negro. Por lo tanto, el contraste de las WCAG 2 no puede utilizarse como guía para el diseño del "modo oscuro", y también genera problemas para las personas con problemas de percepción del color.

Demostración que muestra una comparación de los contrastes mínimos de aprobación para APCA y WCAG 2. WCAG 2 es ilegible para el modo oscuro.

Fuente: APCA. Why APCA as a New Contrast Method?, Andrew Somers

Niveles relacionados con los casos de uso

APCA cuenta con un conjunto de niveles relacionados con los casos de uso; por ejemplo, Lc 90 y Lc 75 es el mínimo para el cuerpo del texto.

También cuenta con una tabla de consulta para asociar el tamaño y el grosor de la fuente con el contraste de legibilidad (Lc). Estas tablas permiten una mayor precisión y, por lo tanto, mayor flexibilidad en el diseño.

APCA Font to Contrast Table. Disponible como texto en la herramienta.

Fuente: APCA Contrast Calculator

Los niveles mínimos básicos, lo que podría considerarse como A/AA en las WCAG 2, sería:

  • Lc 90. Preferred level for fluent text and columns of body text with a font no smaller than 14px/weight 400 (normal).
  • Lc 75. The minimum level for columns of body text with a font no smaller than 18px/400. Lc 75 should be considered a minimum for text where readability is important.
  • Lc 60. The minimum level recommended for content text that is not body, column, or block text. In other words, text you want people to read. The minimums: 24px normal weight (400) or 16px/700 (bold). These values based on the reference font Helvetica.
  • Lc 45. The minimum for larger, heavier text (36px normal weight or 24px bold) such as headlines. This is also the minimum for pictograms with fine details.
  • Lc 30. The absolute minimum for any text not listed above. This includes placeholder text and disabled element text. This is also the minimum for large/solid semantic & understandable non-text elements.
  • Lc 15. The absolute minimum for any non-text that needs to be discernible and differentiable, and is no less than 5px in its smallest dimension. This may include disabled large buttons. Designers should treat anything below this level as invisible, as it will not be visible for many users. This minimum level should be avoided for any items important to the use, understanding, or interaction of the site.

Fuente: APCA. Why APCA as a New Contrast Method?, Andrew Somers.

Notas sobre el tamaño y el peso de la fuente

Andrew Somers también hace hincapié en que el peso de la fuente es relativo. Cuando hablamos del grosor de la fuente, hay que tener en cuenta que el valor de peso CSS (es decir, 300, 400, 700) no es consistente entre las diferentes familias de fuentes. Por ejemplo, "Arial Black" se indica como normal (peso 400) aunque es extra bold. Y Courier New indica peso 400, aunque es extra light.

En las notas del validador APCA se especifica que el peso de la fuente se basa en fuentes de referencia altamente estandarizadas: Helvetica o Arial grosor 400. De modo que debes probar tu fuente con diferentes grosores hasta encontrar la coincidencia más cercana.

Por otra parte, se indica que los tamaños de fuente asumen una relación x-height de al menos 0,5 (es preferible utilizar una altura x de 0,52 a 0,57). En función de ello hay que calcular la cantidad que debe aumentarse la fuente.

Altura x de algunas fuentes. Están por encima de 0.5: Arial, Helvetica, Tahoma, Trebuchet, Verdana. Están por debajo: Calibri, Cambria, Garamond o Times.

Fuente: Estimating the x-height of a font

Por ejemplo, Times New Roman tiene una relación de altura x de 0,45, por lo que debe aumentarse aproximadamente un 16 % en tamaño con respecto a la fuente de referencia. Por lo tanto, si la fuente de referencia se establece en 1 em, Times debe establecerse en 1,16 em para que sea equivalente (18.6px):

html { font-size: 1,16em }

Sobre el diseño de la fuente y su impacto en la legilidad se recomienda en documento: "Evaluating Fonts" (PDF)

¿Debemos usar ya APCA? Herramientas

En primer lugar, hay que insistir en que APCA y las WCAG 3 aún están en desarrollo y todavía no son recomendaciones oficiales del W3C.

APCA Contrast Calculator (Myndex)

APCA Contrast Calculator

APCA Contrast Calculator es una herramienta online de Myndex Technologies, donde Andrew Somers es investigador sénior en ciencias del color.

Se puede usar gratuitamente como beta pública y se pide a las personas que la usan que envíen sus problemas y discusiones al repositorio de GitHub de APCA.

Tras la zona inicial para incluir los colores, hay diversos acordeones que despliegan información adicional, como las tablas de referencia para las fuentes.

Ten en cuenta que APCA reconoce la polaridad, lo que significa que reconoce la diferencia entre texto oscuro sobre un fondo claro y texto claro sobre un fondo oscuro. Por lo tanto, es importante introducir el color del texto/icono y el color de fondo correctamente. No vale como en los validadores WCAG incluir el color indistintamente como background o foreground.

Bridge-PCA Contrast Calculator (compatible con las WCAG 2) (Myndex)

Bridge-PCA Contrast Calculator

Si queremos compatibilidad con las WCAG 2, tenemos la herramienta "Bridge-PCA", también desarrollada por Myndex Technologies.

Esta herramienta, online y gratuita, permite mejorar la legibilidad y el cálculo del modo oscuro, pero cumpliendo con los criterios de conformidad de las WCAG 2.

Si bien Bridge-PCA corrige muchos problemas y mejora la legibilidad, se pierde la mayor flexibilidad de diseño que ofrece la implementación completa de APCA, debido al hecho de que, para mantener la compatibilidad con versiones anteriores, algunos contrastes se fuerzan a ser más altos de lo que realmente necesitan ser.

APCA Contrast Calculator nos sive para mejorar el contraste, especialmente en el "modo oscuro", y a la vez cumplir con la norma actual que nos exige la legislación.

Nota: si esta herramienta no está disponible dispones de otras muchas que listo en el siguiente apartado.

Otras herramientas

Se han publicado muchas herramientas como APCA Contrast Calculator o Bridge-PCA Contrast Calculator, por listar algunas:

Si trabajas con Figma, también tienes plugins de contraste que revisan con ambos algoritmos, como Contraste:

Extensión de Figma para medir el contraste, tiene la opción de usar el algoritmo APCA

También hay otras herramientas que se centran en crear paletas accesible. En ellas, seleccionas los colores de la paleta que vas a usar y te permite visualizar sus combinaciones, indicándote el contraste WCAG y APCA. Por ejemplo:

miércoles, 24 de enero de 2024

Errores habituales de accesibilidad en el acceso con modo alto contraste

Este blog visualizado en modo alto contraste. El fondo es negro y el texto blanco y amarillo. Las imágenes se visualizan igual. Los campos de formulario y botones tienen borde blanco y fondo negro.

Hay personas que acceden a las páginas web, las aplicaciones móviles o los documentos en modo alto contraste, una configuración que reduce y simplifica los colores de la interfaz. Habitualmente son personas con baja visión, fotosensibles o con fatiga visual.

En este artículo repaso los errores más habituales que me encuentro al navegar por sitios web en modo alto contraste, con ejemplos concretos de estos errores.

Índice

Qué es el modo alto contraste y a quién beneficia

El modo alto contraste reduce y simplifica los colores de la interfaz:

  • El texto y el fondo tienen colores sólidos con alto contraste entre ellos. Por ejemplo, fondo negro, texto blanco y enlaces amarillos. O, por ejemplo, fondo blanco, texto negro y enlaces azul oscuro. Esto genera una apariencia visual más uniforme y consistente, y que los enlaces resalten más.
  • Los controles de formulario, como los campos y los botones, tienen contornos y rellenos sólidos de alto contraste, sin degradados o sombras. Por ejemplo, borde blanco, fondo negro y texto blanco. Esto favorece su visualización e identificación.
  • Las imágenes y los iconos se visualizan igual, sin modificar sus colores.

No hay que confundir el modo alto contraste con las opciones de invertir colores u otras personalizaciones relacionadas con los colores.

Este artículo trata solo sobre los errores en el acceso con el modo alto contraste.

Por ejemplo, la inversión de colores invierte el esquema de color original, creando un efecto de "negativo fotográfico" en toda la pantalla. Mientras que el modo alto contraste lo que hace es reducir el número de colores, aplicando solo un número limitado de colores según el tipo de elemento (textos, enlaces, botones...)

Comparativa entre la visualización de este blog con y sin alto contraste. En alto contraste los colores se simplifican. El fondo es negro y el texto blanco y amarillo. Las imágenes se visualizan igual. Los campos de formulario y botones tienen borde blanco y fondo negro.

Este blog en su visualización en modo alto contraste (a la izquierda), frente a su visualización sin alto contraste (a la derecha). En la versión alto contraste los colores no se invierten, se simplifican.

Una persona puede acceder en modo alto contraste mediante un producto de apoyo o mediante las opciones que te dé el sistema operativo o el agente de usuario.

Por ejemplo, en Windows en muy sencillo activar el modo alto contraste, solo tienes que pulsar las teclas: alt izquierda + mayúsculas izquierda + impr. pantalla. También puedes acceder desde "Configuración > Accesibilidad > Contraste alto" y elegir entre varios temas de alto contraste.

Pantalla de configuración de alto contraste en Windows. Se puede elegir entre diferentes temas.

Configuración del modo alto contraste en Windows (abrir la imagen más grande en ventana nueva)

El modo alto contraste favorece especialmente a las personas con baja visión, pero también a las personas fotosensibles y con fatiga visual. Por ejemplo, la Survey of Users with Low Vision #2 Results de Webaim de 2018 indicaba que el 31% de los encuestados accedía con alto contraste, y el 71% prefería fondo oscuro con texto claro.

Las ventajas del modo alto contraste son:

  • Mejora de legibilidad: hace que el texto sea más fácil de leer al aumentar el contraste entre las letras y el fondo.
  • Destaca elementos visuales: los iconos y los botones resaltan más, y es más fácil identificar diferentes elementos en la pantalla.
  • Reduce la fatiga visual: el ajuste de los colores y el contraste contribuyen a reducir la fatiga ocular, especialmente útil para las personas sensibles a la luz.
  • Facilita la navegación: mejora la claridad de la interfaz, más simplificada, haciendo más sencillo desplazarse y entender la disposición de los elementos en pantalla. Gracias a ello, también se pueden distinguir mejor detalles importantes que antes quedaban menos visibles.
  • Adaptabilidad a diversas condiciones de iluminación: permite adaptarse tanto a entornos brillantes como a situaciones con poca luz, mejorando la visibilidad de la interfaz en diferentes contextos.
  • Ayuda a concentrarse: puede ayudar a algunas personas a concentrarse mejor en el contenido

A continuación, voy a explicar los errores más habituales que me encuentro al acceder a los sitios web en modo alto contraste, con ejemplos concretos. Puedes proponer más o compartir tu experiencia en los comentarios del artículo.

Error 1: Iconos y logotipos que desaparecen

En el siguiente ejemplo hay tres elementos SVG que desaparecen en el modo alto contraste: el icono de menú, el logotipo y el icono del widget de accesibilidad.

Página de Zara sin alto contraste y con alto contraste. En la versión alto contraste desaparece el icono de menú, de accesibilidad y el logotipo.

Comparativa de una página sin alto contraste (a la izquierda) y con alto contraste (a la derecha). En la versión alto contraste desaparecen los ficheros SVG (abrir la imagen más grande en ventana nueva)

¿Por qué desaparecen? Son elementos SVG que no tienen definido el color del fondo o de primer plano, porque se ha presupuesto que siempre se verán sobre fondo blanco. Por tanto, en alto contraste, el color negro de los iconos no se ve sobre el fondo negro.

No presupongas que todas las personas ven la página igual que tú, con el mismo fondo o los mismos colores.

Define correctamente el color en los SVG, y no incluyas ficheros PNG o GIF con fondo transparente.

El problema de esta página se puede solucionar de diferentes maneras, detallo dos soluciones como ejemplo.

Solución 1

Haz que los SVG hereden el color actual:

svg {fill: currentColor;}

El resultado será el siguiente:

El fondo es negro. Las rayas del icono de menú son blancas sobre el fondo negro. Las letras del logotipo de Zara son amarillas sobre el fondo negro. El icono de accesibilidad es un hombre negro dentro de un círculo blanco.

El logotipo es amarillo, en vez de blanco, porque es un enlace, así que hereda el color amarillo de los enlaces.

Solución 2

Define el color de fondo de los SVG:

.fondoblanco {background-color:#fff;}

Y aplica ese estilo a los SVG:

<svg class="fondoblanco" ...>

En el modo alto contraste se visualizarán así:

El fondo es negro. Las rayas del icono de menú son negras sobre un recuadro blanco sobre el fondo negro. Las letras del logotipo de Zara son blancas sobre un recuadrado blanco sobre el fondo negro. El icono de accesibilidad es un hombre blanco dentro de un círculo negro sobre un recuadrado blanco.

Error 2: Campos de formulario y botones que no se pueden distinguir

En el siguiente ejemplo hay un campo de texto que desaparece en la versión alto contraste:

Comparativa de una página de Zara sin alto contraste y con alto contraste. La página tiene un campo de formulario con un borde solo inferior. En el modo alto contraste el campo no tiene ningún borde.
Detalle del campo email sin borde en la versión alto contraste.

Comparativa de una página sin alto contraste y con alto contraste. El borde del campo desaparece en el modo alto contraste (abrir la imagen más grande en ventana nueva)

¿Por qué desaparece el campo de texto? El problema es que el campo de texto tiene anulado el borde mediante el estilo border:none. El borde inferior del campo, en la visualización sin alto contraste, es realmente un div vacío, bajo el campo, con un estilo que simula una raya.

Define siempre el borde de los botones y de los campos de formulario, aunque sea para definir que es transparente o del mismo color que el fondo.

No elimines el borde de los elementos o desaparecerán en el modo alto contraste.

En el siguiente ejemplo podemos observar un botón verde sin borde que se visualiza claramente en la versión sin alto contraste. Sin embargo, al visualizarlo con el modo alto contraste, el color de fondo del botón pasa a ser negro como el fondo de la página y, como no tiene definido un borde, no se aprecia que es un botón, parece un texto.

Ejemplo de una página de Vodafone. En la versión por defecto hay un botón verde sin borde que se visualiza claramente. En el modo alto contraste, el color de fondo del botón pasa a ser negro como el fondo y, como no tiene borde, no se aprecia que es un botón, parece un texto.

Comparativa de la visualización del botón "Te llamamos gratis" sin alto contraste (a la izquierda) y en el modo alto contraste (a la derecha).

El problema se puede solucionar de diferentes maneras, detallo dos soluciones como ejemplo.

Solución 1

Una solución es añadir al campo de texto (en el primer ejemplo) o al botón (en el segundo ejemplo) un borde mediante estilos CSS, transparente o del mismo color que el fondo: border: 1px solid #fff.

De este modo, el borde no se verá, pero en el modo alto contraste sí, y se verá tanto en el modo alto contraste con fondo blanco como con fondo negro.

Solución 2

Otra solución es especificar que estos elementos tengan borde en el modo alto contraste, añadiendo en la CSS:

@media (forced-colors: active) {input {border: solid 1px;}}

Estás indicando que, si se ha activado el modo de colores forzados, los input tengan un borde.

Advertencia:

Solo debes usar forced-colors en casos justificados como el que he señalado. No lo uses nunca para forzar que los textos o los enlaces se vean de un determinado color en vez del color que define el modo alto contraste.

Ten también mucho cuidado con el uso de forced-color-adjust: none que evita que un elemento entre en colores forzados, úsalo solo si es la única manera de conseguir que un elemento concreto se visualice de forma correcta.

Error 3: Componentes personalizados invisibles

El modo alto contraste afecta a determinados elementos y propiedades CSS, por eso, a veces los widget personalizados son invisibles en el modo alto contraste. Para ampliar información os recomiendo el artículo Guía de Windows con alto contraste parte 1, donde puedes consultar exactamente qué elementos y propiedades CSS son afectadas por el modo alto contraste.

En los siguientes ejemplos, se observan unas barras de progreso que desaparecen en el modo alto contraste:

Barra de progreso azul con un texto 25%. En la versión alto contraste solo se ve el texto 25%.

Barra de progreso que desaparece en el modo alto contraste (abrir la imagen más grande en ventana nueva)

Barra de progreso con una animación. En la versión alto contraste no se ve.

Barra de progreso que desaparece en el modo alto contraste (abrir la imagen más grande en ventana nueva)

Las claves para solucionarlo son las que ya hemos visto, definir los bordes y trabajar adecuadamente con forced-colors y forced-color-adjust: none

En el siguiente ejemplo, hay unas casillas de verificación que desaparecen en el modo alto contraste:

Una página de la web de Zara vista con y sin alto contraste, Hay un formulario con checks que no se ven en la versión alto contraste.

Comparativa de la visualización de una página sin alto contraste (a la izquierda) y en el modo alto contraste (a la derecha). En el modo alto contraste desaparecen las casillas de verificación.

La razón es que no son elementos checkbox estándar, sino que estos se ocultan visualmente, incluyendo en su lugar elementos SVG con los mismos errores que vimos en el apartado Error 1: Iconos y logotipos que desaparecen.

Error 4: Imágenes de fondo y problemas de contraste

Otro error habitual es la falta de contraste de los textos sobre las imágenes de fondo. Ten en cuenta que en la versión alto contraste el color del texto será diferente y pueden eliminarse algunos efectos, afectando al contraste de los textos.

En los siguientes ejemplos, se muestra un carrusel con diferentes destacados. En cada destacado hay un texto blanco sobre un degradado oscuro, situado sobre una imagen de fondo. En el modo alto contraste, el texto es amarillo porque funciona como enlace, y el degradado oscuro que tenía debajo ha desaparecido, de modo que el texto tiene muy poco contraste sobre la imagen de fondo.

Carrusel con una imagen de fondo y un texto y botón sobre ella. En la versión por defecto la imagen tiene un degradado bajo el texto blanco que favorece su contraste. En la versión alto contraste el degradado desaparece y el texto ahora amarillo no tiene contraste sobre la imagen.

Visualización de un carrusel sin alto contraste (en primer lugar), frente a su visualización en modo alto contraste (en segundo lugar) (abrir la imagen más grande en ventana nueva)

Carrusel con otra imagen de fondo y un texto y botón sobre ella. En la versión por defecto la imagen tiene un degradado bajo el texto blanco que favorece su contraste. En la versión alto contraste el degradado desaparece y el texto ahora amarillo no tiene contraste sobre la imagen.

Visualización de un carrusel sin alto contraste (a la izquierda), frente a su visualización en modo alto contraste (a la derecha) (abrir la imagen más grande en ventana nueva)

Para solucionarlo, podrías trabajar con @media (forced-colors: active) en la CSS, como ya hemos visto.

Error 5: Foco de teclado no visible

En algunos portales, el foco de teclado de los botones viene marcado solo por un cambio de color:

Un botón Más información con texto negro y fondo amarillo. Al coger el foco de teclado tiene texto blanco y fondo negro.

Botón amarillo sin el foco de teclado (a la izquierda), frente a su visualización con el foco de teclado (a la derecha). El foco de teclado lo marca el cambio de color, de amarillo a negro.

Este botón amarillo cambia a negro cuando coge el foco de teclado. El botón no tiene borde y tiene anulado el estilo del foco por defecto con outline:none (o outline:0).

Cuando se visualiza este botón en modo alto contraste, no parece que sea un botón porque no tiene borde y, además, no queda resaltado al coger el foco de teclado:

El mismo botón de la imagen anterior en el modo alto contraste. No tiene borde, su fondo negro se confunde con el fondo negro de la página. No queda resaltado al coger el foco de teclado.

El mismo botón en el modo alto contraste (a la izquierda), no tiene borde, así que no se aprecia que es un botón. Además, no queda resaltado al coger el foco de teclado (a la derecha).

El foco de teclado debe visualizarse también en el modo alto contraste.

No elimines el estilo del foco de teclado por defecto con outline:none (o outline:0) o, al menos, permite que esté presente en el modo alto contraste usando forced-colors.

En resumen...

Os animo a trabajar un día en modo alto contraste para comprender mejor las barreras que se encuentran muchas personas al acceder de esta manera.

Las buenas prácticamos que he explicado son:

  1. Define correctamente el color en los SVG y no incluyas ficheros PNG o GIF con fondo transparente.
  2. Define siempre el borde los botones y de los campos de formulario, aunque sea para definir que es transparente o del mismo color que el fondo. No elimines el borde los elementos o desaparecerán en el modo alto contraste.
  3. Puedes usar forced-colors en la CSS en casos justificados y comprobando siempre la página en modo alto contraste, con diferentes temas.
  4. Comprueba siempre en modo alto contraste la página, especialmente si tiene componentes personalizados o texto sobre imágenes o degradados o con otros efectos.
  5. Evita marcar el foco de teclado solo con un cambio de color en los elementos.
  6. Evita anular el estilo del foco de teclado por defecto con outline:none (o outline:0) o si lo haces para crear un foco más visible, comprueba siempre el resultado en modo alto contraste.

Artículos relacionados: