Desarrollo web

Estilos web más accesibles usando modos de colores OKLCH en CSS

Blog 'Pasión por el código' de Ailon Webs

Por M. Soutto

El modo de color OKLCH representa una nueva era en la gestión del color para el diseño web. Es parte de una generación de espacios de color perceptuales que ofrecen una precisión y control sin precedentes, facilitando la creación de estilos web más accesibles y visualmente atractivos.

¿Qué es el modo de color OKLCH?

En CSS oklch() es una función de color, que nos permite definir colores de una forma perceptualmente uniforme. Esto significa que los cambios en sus valores se corresponden de manera más fiel con cómo los percibimos visualmente.

Su sintaxis es oklch(L C H) o oklch(L C H / a) y utiliza los siguientes parámetros:

  • L (Lightness): La luminosidad percibida, con un valor de 0 a 100%. A diferencia de hsl(), esta L mantiene una apariencia de brillo constante a nuestros ojos.
  • C (Chroma): Representa la intensidad o saturación del color, desde 0 (gris neutro) hasta su punto máximo, que depende del matiz.
  • H (Hue): El ángulo de matiz, medido en grados de 0 a 360, similar a hsl().
  • a (Alpha, opcional): La opacidad, un número entre 0 y 1, o un porcentaje (0% a 100%).

OKLCH es el futuro de los colores en CSS

OKLCH representa un avance significativo en la gestión del color dentro del diseño web, integrado en el Módulo de Color CSS Nivel 4. Este espacio de color no solo ofrece uniformidad perceptiva, sino también un robusto soporte para amplias gamas de color, superando las limitaciones de los modelos tradicionales como RGB y HSL. Su implementación asegura una coherencia visual sin precedentes y una manipulación de color predecible, elementos cruciales para el desarrollo web contemporáneo.

Principios fundamentales y ventajas de OKLCH

La superioridad de OKLCH reside en varias de sus características intrínsecas:

  • Uniformidad Perceptiva. A diferencia de HSL, donde la percepción de la luminosidad puede variar drásticamente entre tonos (por ejemplo, azul y amarillo con la misma luminosidad), OKLCH garantiza que cambios equivalentes en sus valores se traduzcan en diferencias visuales consistentes. Esto permite una representación de la luminosidad perceptivamente precisa en todo el espectro cromático.
  • Soporte de Gama Amplia. OKLCH facilita el acceso a espacios de color avanzados como Display P3 y Rec2020, expandiendo la paleta de colores disponibles en un 50% en comparación con sRGB. Esta capacidad es indispensable para aprovechar al máximo las pantallas de alta gama, incluyendo dispositivos Apple y paneles OLED, que pueden renderizar una gama cromática más rica y vibrante.
  • Control Intuitivo del Color. La estructura de OKLCH, basada en Luminosidad (0-100%), Croma (intensidad del color) y Tono (0-360°), permite una manipulación del color sumamente intuitiva. Los diseñadores y desarrolladores pueden ajustar el brillo sin alterar la saturación o modificar el tono manteniendo una luminosidad constante, lo que optimiza el proceso creativo.
  • Accesibilidad Mejorada. La previsibilidad de los valores de luminosidad en OKLCH simplifica el cumplimiento de las directrices WCAG (Web Content Accessibility Guidelines). Al correlacionarse directamente con la percepción visual, OKLCH facilita la consecución de ratios de contraste adecuados sin la necesidad de un proceso iterativo de prueba y error, mejorando significativamente la accesibilidad web.
  • Gradientes de Color de Calidad Superior. La uniformidad perceptiva de OKLCH se traduce en la creación de gradientes de color más naturales y estéticos, eliminando las transiciones bruscas o las "áreas grises" que a menudo se observan con sRGB. Esto resulta en mezclas de color visualmente más atractivas y cohesivas.

Aspectos técnicos y sostenibilidad

Desde una perspectiva técnica y de futuro, OKLCH se posiciona como una solución robusta y sostenible:

  • Tecnología a Prueba de Futuro. OKLCH se alinea con la especificación CSS Color 4, gozando de soporte nativo en los principales navegadores (Chrome, Safari, Firefox, Edge). Su compatibilidad con funciones de color relativas y capacidades modernas de manipulación de color lo convierte en una elección preparada para las evoluciones futuras del CSS.
  • Precisión Matemática. Basado en el espacio de color Oklab de Björn Ottosson (2020), OKLCH fue diseñado para corregir las deficiencias de CIE LAB. Ofrece un mapeo de gama mejorado y es la recomendación del CSSWG (CSS Working Group) para operaciones de color, garantizando una base matemática sólida y precisa.
  • Formato Legible. A diferencia de los formatos hexadecimales o RGB, los valores OKLCH son inherentemente más comprensibles. Esto permite una identificación rápida de las propiedades del color, agilizando el flujo de trabajo y haciendo que la gestión del color sea más eficiente y predecible.
  • Independencia del Dispositivo. OKLCH posee la capacidad de codificar cualquier color perceptible por el ojo humano, trascendiendo las limitaciones específicas de las capacidades de monitorización. Los navegadores gestionan automáticamente la asignación de colores fuera de gama al color más cercano que la pantalla puede reproducir, asegurando una visualización consistente.

Por lo tanto, OKLCH no es meramente una alternativa a los espacios de color existentes, sino una evolución que aborda desafíos críticos en la consistencia visual, la accesibilidad y la expansión de la gama cromática. Su adopción representa un paso estratégico hacia un diseño web más sofisticado, preciso y universalmente accesible.

¿Cómo usar OKLCH para crear una paleta de colores accesible?

Veamos un ejemplo práctico para diseñar un botón con estados accesibles.

Escenario: Necesitamos un botón principal, con variaciones para los estados "hover" y "active". Y debemos tener en cuenta que cuando usamos modos de colores como RGB/HEX, oscurecer o aclarar un color puede alterar su tono o saturación de forma inesperada. Con OKLCH, es sencillo y predecible.

Paleta de colores accesibles generada con OKLCH

Paso 1: elegimos un color base en OKLCH

Elegimos un color azul con una luminosidad media para el estado normal del botón, color base.

  • color base: oklch(55% 0.18 250)
  • L = 55% : Luminosidad media
  • C = 0.18 : Buena saturación
  • H = 250 : Tono azul

Paso 2: creamos variaciones de luminosidad para los estados

Solo ajustamos Lightness (L), mantenemos Chroma (C) y Hue (H) iguales:

  • color hover (más claro), aumentamos L de 55% a 60%: oklch(60% 0.18 250)
  • color active (más oscuro), disminuimos L de 55% a 45%: oklch(45% 0.18 250)

Paleta resultante:

  • oklch(55% 0.18 250) Base
  • oklch(60% 0.18 250) Hover
  • oklch(45% 0.18 250) Active

¿Por qué la paleta de colores resultante mejora el contraste y la accesibilidad?

Porque hemos controlado la luminosidad directamente, asegurando la legibilidad del texto sin que lo afecte el color del fondo del botón aunque tenga un estado distinto. Es decir, al usar OKLCH hemos logrado:

  • Contraste predecible. Si contolamos la luminosidad directamente, garantizamos que la diferencia de luminosidad entre el texto (ej. blanco) y el fondo del botón sea siempre suficiente para tener una buena legibilidad.
  • Consistencia perceptual: Nuestro ojo percibirá estos tres colores como variaciones del mismo azul, creando transiciones suaves y naturales que mejoran la usabilidad.
  • Fácil de ajustar: Si necesitamos corregir la luminosidad para cumplir con los requisitos de accesibilidad, simplemente ajustamos el valor de Lightness sabiendo que solo impactará en la claridad/oscuridad, y no el tono o en la saturación.
  • Amplia gama de colores: Si necesitamos usar un azul más vibrante fuera de sRGB (que es el espacio de color estandarizado que define una gama específica de colores basados en los colores primarios rojo, verde y azul o RGB), podemos usar un valor de Chroma más alto, manteniendo el control de la luminosidad para la accesibilidad.

Ejemplo de uso en CSS:

button {
  background-color: oklch(55% 0.18 250); /* Color base del fondo del botón */
  color: oklch(98% 0 0); /* Texto casi blanco */
  padding: 10px 20px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  transition: background-color 0.2s ease-in-out;
}

button:hover {
  background-color: oklch(60% 0.18 250); /* Ligeramente más claro al pasar el ratón */
}

button:active {
  background-color: oklch(45% 0.18 250); /* Más oscuro al hacer clic */
}

Este ejemplo demuestra cómo trabajar con OKLCH simplifica el diseño de estados de UI (User Interface o Interfaz de Usuario) y paletas, brindando mayor confianza en la consistencia perceptual y accesibilidad de los colores.

¿Cómo se representan los colores digitalmente?

En el artículo ¿Cómo percibimos los colores? Y como influencia el diseño web de este blog puedes profundizar más sobre los 'Dispositivos con pantallas'.

Sabemos que las pantallas digitales utilizan subpíxeles para mostrar colores. Cada píxel en una pantalla está compuesto por tres subpíxeles: rojo, verde y azul (RGB). Estos subpíxeles se iluminan en diferentes intensidades para crear el color que vemos.

Entonces ¿cómo sería la representación de un píxel usando colores OKLCH? ¿sería similar en OKLCH a RGB?

Para entender cómo el modo de color OKLCH mejora la accesibilidad, debemos comprender cómo los colores se representan en las pantallas digitales.

Cada píxel en una pantalla digital

Es crucial diferenciar entre modelo de color y representación física en pantalla.

Modelos de color RGB versus OKLCH:

  • RGB: Es un modelo aditivo basado en cómo nuestros ojos perciben la luz y cómo los dispositivos la emiten (subpíxeles rojo, verde y azul).
  • OKLCH: Un modelo perceptualmente uniforme, diseñado para que las diferencias numéricas en sus valores (L, C, H) se correspondan más directamente con las que el ojo humano percibe.

¿Cómo se vería un píxel OKLCH físicamente?

Aquí está el punto clave: no existe una "representación física" directa de un píxel OKLCH en términos de subpíxeles. Cuando usamos un color OKLCH, el navegador lo convierte internamente a un valor RGB (o a otro espacio de color nativo de la pantalla, como Display P3) antes de enviarlo a la pantalla. La pantalla lo renderizará usando sus subpíxeles RGB de la misma manera que lo haría con cualquier otro color.

La diferencia es cómo tú, como diseñador o desarrollador, piensas y manipulas ese color.

¿Entonces por qué OKLCH es mejor que RGB o HSL?

El modo de color OKLCH ofrece un control del color superior y más intuitivo que sus predecesores, RGB y HSL, gracias a su uniformidad perceptual. Mientras que RGB (Rojo, Verde, Azul) es un modelo aditivo que describe el color mediante la intensidad de la luz roja, verde y azul, y HSL (Hue, Saturation, Lightness) define el color por su tono, saturación y luminosidad, ambos tienen limitaciones cruciales.

La diferencia clave de OKLCH reside en su componente de Luminosidad (L). A diferencia de HSL, donde la "L" puede engañar a nuestra percepción haciendo que colores con la misma luminosidad parezcan diferentes, la "L" de OKLCH está diseñada para ser perceptualmente uniforme. Esto significa que un mismo valor de luminosidad en OKLCH siempre se verá con el mismo brillo a nuestros ojos, sin importar el tono o la saturación. Esto facilita un control del color mucho más predecible y preciso.

Por otro lado, RGB es inherentemente dependiente del dispositivo; el mismo valor RGB puede variar en apariencia entre diferentes pantallas y no es nada intuitivo para ajustar la luminosidad o la saturación de un color. OKLCH, en cambio, nos permite manipular directamente su Luminosidad (L), Croma (C) (intensidad o saturación) y Tono (H) de una manera que corresponde directamente con cómo percibimos los colores. Esta cualidad de ser perceptualmente uniforme hace de OKLCH una herramienta poderosa para asegurar que los colores se vean consistentes y vibrantes en cualquier contexto, superando las ambigüedades de RGB y HSL.

La función oklch() de CSS, introducida en 2023, ha ganado una notable popularidad en 2025. Su adopción por parte de frameworks populares como TailwindCSS es un testimonio de su relevancia y utilidad en el desarrollo moderno.

TailwindCSS es un framework CSS "Utility-First" que proporciona clases predefinidas de bajo nivel, lo que permite construir rápidamente interfaces de usuario personalizadas. Con su versión 4.0, TailwindCSS ha modernizado su paleta de colores, adoptando el espacio de color P3. Según lo expresado en su blog oficial "Hemos actualizado toda la paleta de colores predeterminada de RGB a OKLCH, aprovechando la gama más amplia para que los colores sean más vivos en áreas donde antes estábamos limitados por el espacio de color sRGB.".

Conclusión

La implementación de OKLCH en CSS marca un antes y un después en la forma en que los diseñadores y desarrolladores web abordamos el color. Aunque nuestras pantallas sigan operando con subpíxeles RGB, la verdadera potencia de OKLCH radica en su uniformidad perceptual. A diferencia de RGB, que se centra en cómo las máquinas emiten luz, OKLCH está diseñado para reflejar fielmente la percepción humana del color. Esto lo convierte en una herramienta superior para comprender, manipular y definir esquemas de color en la web.

La principal ventaja de OKLCH es su capacidad para resolver problemas intrínsecos de los modelos de color tradicionales como RGB, HEX y HSL. Su naturaleza perceptualmente uniforme no solo mejora la accesibilidad al permitir la creación de paletas más predecibles e intuitivas, sino que también facilita la generación de paletas dinámicas que mantienen la coherencia visual y siendo compatible con navegadores modernos hoy en día. Además, OKLCH nos permite aprovechar al máximo las gamas de color más amplias (Display P3 y HDR) que ofrecen las pantallas modernas, traduciéndose en una experiencia visual más rica y fiel.

En esencia, OKLCH no altera la forma en que una pantalla muestra los píxeles; lo que cambia es la herramienta conceptual y numérica que tenemos a nuestra disposición. Al alinear los valores de color con la percepción humana, OKLCH simplifica la creación de diseños con mejor accesibilidad de una manera mucho más directa y predecible. Adoptar OKLCH no es solo una mejora técnica, es abrazar el futuro de la gestión del color en la web, obteniendo beneficios tangibles en calidad y usabilidad.

Fuentes

Categorías: Desarrollo web

Etiquetas: Desarrollo web, Diseño web, CSS

¿No estás seguro de qué web te conviene?

Empieza a construir. Cuéntanos tu idea, nosotros diseñaremos tu sitio web en internet que se adapte mejor a tus necesidades.