La nueva especificación CSS Color 4 ha agregado la nueva notación de OKLCH para declarar colores. En OKLCH existen varios parámetros: "l c h" o "l c h / a", donde cada uno es: L es la luminosidad percibida (0-1). "Percibido" significa que tiene una luminosidad constante para nuestros ojos, a diferencia de L en HSL. C es el croma, desde el color gris hasta el color más saturado. H es el ángulo de tono (0-360). A es opacidad (0-1 o 0-100%).
|
etiquetas: color , css , teoría del color , espacio de color , oklch , rgb , hsl , p3
• L es la luminosidad percibida. Va de 0 (negro) a 1 (blanco). También admite porcentajes (de 0 % a 100 %), pero el % no funciona en calc() ni en colores relativos.
• C es la cromaticidad, la saturación del color. Va de 0 (gris) a infinito. En la práctica, hay un límite, pero depende de la gama de colores de la pantalla (los colores P3 tendrán valores mayores que los sRGB) y cada tono
… » ver todo el comentario
Ha dejado todo en blanco y negro
¡Qué pereza!
Veamos un color rojo puro por ejemplo, en RGB: rgb(255, 0, 0)
Ahora el mismo color en OKLCH: oklch(0.628 0.2577 29.23)
SI alguien considera el segundo mas entendible a simple vista que el primero, es que no es de este planeta
"OKLCH frees designers from the need to manually choose every color. Designers can define a formula, choose a few colors, and an entire design system palette is automatically generated."
Diseñadores definiendo formulas
Esto si que era "human readable"
De todas formas me parece una gran evolución, puedes hacer un css en el que le das un color base y a partir de ahí calcular el resto de colores que se van a usar sin que la luminosidad se resienta y sin tener que usar complejas fórmulas en js, para los que nos gusta hacer páginas sin javascript es un avance.
#18 lo ha explicado mucho mejor.
Así que mi workflow no va a cambiar demasiado. Para dar o quitar saturación, o hacer un barrido de color sigue siendo superior. A efectos prácticos necesitas memoria por cada pixel, para almacenar cuatro valores en lugar de tres valores. Y esto, en los dispositivos son soporte nativo para cualquier espacio de color y un canal alfa, sigue ocupando lo mismo. Cuando las animaciones son procedirales ocupa muy… » ver todo el comentario
Si esta paleta es más amplia es interesante, aunque según leo la mayoría de dispositivos lo van a convertir a rgb, con lo que ya pierdes control y precisión sobre la reproducción.
Generalmente siempre sabes si vas a imprimir tarjetas, hacer carteles, es para un rótulo, o solo se va a quedar el la web.
"Quiero una paleta que todos los colores sean verde aceituna y me cambie su cromaticidad" es más fácil de lograr en oklch que en RGB porque en oklch solo tienes que variar una coordenada, mientras que en RGB normalmente tienes que variarlas todas.
Para eso me parece extremadamente útil. Si quiero #FF0000 escribiré eso, no tiene sentido convertirlo a otro espacio de color.
Pero tampoco me parece que sea algo que HSL u OKLCH arreglen ya que implica recordar (y ahí también habrá fallos de precisión) en que punto de la "tabla" empieza cada tono.
xkcd.com/927/ (Standars)
Todo esto lo hacen para complicar más la vida del diseñador, que hoy día hasta tienen que lidiar con los de back end
Ojalá se lo tiren o no se lleve a cabo, pero me imagino que habrá muchos intereses económicos.
Lo que destaco es cómo de "simple" era CSS antiguamente para aprender y lo complejo que se ha vuelto ahora si tienes que empezar a aprenderlo. Los cambios para mí han sido graduales y acumulativos, pero para alguien empezando es sobrecogedor.
Lo malo de antes es que CSS no estaba del todo bien interpretado en todos los navegadores, estándares web mal implementados, IE6 era una pesadilla, los hacks para versiones de navegador concretas, bugs, diseño en tablas, etc. Por suerte ahora sabes que CSS en general funciona sin grandes problemas.
Lo que nunca se debe hacer son los clásicos "deprected", que son un problema porque no siempre hay una persona de mantenimiento que se puede hacer cargo y actualizar el código, sea CSS, C, HTML, Python, JS... y peor aún lo de Python, crear un lenguaje incompatible... pero con la misma extensión y todo, cuando podrían haber usado ".py3" y carpetas de instalación diferentes, y solucionar en buena medida el problema.
CSS es un Frankenstein, conviven especificaciones antiguas con nuevas y muchas redundantes. Hace 15/20 años era fácil de recordar todo, ahora siento lástima por los iniciados aprendiendo CSS.
Uno de sus puntos fuertes es su retrocompatibilidad, si una página usa HEX o un desarrollador quiere usarlo, va a funcionar sin problema. Mientras que si necesita algo más complejo puede usar otra especificación.
Sería mucho peor si solo se aplicase una especificación, ya que implicaría rehacer todas las webs y tener que aprender de nuevo cada vez que surja algo nuevo. O directamente que no haya nada nuevo.
Que tenía que calcular bien la lana a pedir para que lo que fuera a tejer saliera del mismo color y no fueran tintadas diferentes.
En google dice que hay un "Indigo" pero para mi es azul oscuro.