Saltar al contenido

Acerca de Grabient

Grabient crea degradados a partir de fotogramas clave: de 2 a 8 colores unidos por una curva suave.

1 · Fotogramas clave

Un fotograma clave es un color que eliges. Como en animación, defines unos pocos y se rellenan los colores intermedios. Una paleta tiene de 2 a 8 fotogramas clave, espaciados uniformemente a lo largo del degradado, que pasa por cada uno:


Luminosidad inicial
Luminosidad final
10

Croma
0.300

Tono
Recorrido
90°-90°

Los puntos son fotogramas clave. La gráfica muestra la luminosidad, el croma y el tono a lo largo del degradado. Arrastra un punto para cambiar un fotograma clave.

Cada fotograma clave consta de tres números en OKLCH. La luminosidad L va de 0 (negro) a 1 (blanco). El croma C indica lo colorido que es: 0 es gris, y los colores más vivos de una pantalla rondan 0.3. El tono H es el ángulo en la rueda de colores, en grados.

2 · La fórmula

La luminosidad, el croma y el tono tienen cada uno su propia curva, dibujada en la gráfica de arriba. Cada curva pasa por los fotogramas clave y se dobla con suavidad entre ellos. El color en cualquier punto es el que dan las tres curvas en ese punto.

Los degradados de CSS y de Figma unen sus paradas de color con líneas rectas, así que puede verse un borde tenue donde la transición cambia de ritmo.

En la fórmula, t va de 0 al inicio del degradado a 1 al final. Con K fotogramas clave, el fotograma clave i está en t = i / (K − 1), contando desde 0. Cada curva es un spline de Catmull–Rom, y gamut() ajusta el color a la pantalla (sección 6):

color(t) = gamut( L(t), C(t), H(t) )

// one axis: a Catmull–Rom spline through K evenly spaced valuesconst { min, max, floor } = Math;function spline(v, t) {  const K = v.length, x = min(max(t, 0), 1) * (K - 1);  const i = min(K - 2, floor(x)), u = x - i;  const p0 = v[max(i - 1, 0)], p1 = v[i];  const p2 = v[i + 1], p3 = v[min(i + 2, K - 1)];  return p1 + 0.5 * u * (p2 - p0    + u * (2*p0 - 5*p1 + 4*p2 - p3    + u * (3*(p1 - p2) + p3 - p0)));}// the color at t from the keyframes' L, C and H. A spline can overshoot// between keyframes, so L is kept in 0..1 and C at 0 or more. The// browser fits an oklch() color to the screen (section 6).function color(L, C, H, t) {  const l = min(max(spline(L, t), 0), 1), c = max(spline(C, t), 0);  return `oklch(${l} ${c} ${spline(H, t)})`;}

3 · Pasos

Para dibujar el degradado, Grabient toma colores en puntos espaciados uniformemente, llamados pasos. El primer y el último paso son el primer y el último fotograma clave. Los estilos de degradado usan los pasos como paradas de color. Los estilos de franjas muestran cada paso como una franja de color plano. Nunca hay menos pasos que fotogramas clave:

La misma paleta en 7 pasos. Los puntos marcan los fotogramas clave.
Pasos

4 · Por qué OKLCH

RGB y HSL describen cómo una pantalla mezcla la luz, y sus valores a menudo no coinciden con lo que vemos. El amarillo puro y el azul puro tienen ambos una luminosidad HSL del 50 %, pero el amarillo parece mucho más claro. OKLCH les da 0.97 y 0.45. Es el OKLab de Björn Ottosson en forma polar, diseñado para que cambios iguales en sus valores se vean iguales. Dos colores mezclados de ambas formas:

Verde y magenta mezclados en RGB (arriba) y en OKLCH (abajo). La mezcla en RGB se vuelve gris en el centro.

Como la luminosidad, el croma y el tono están separados, cambiar el tono de un fotograma clave mantiene su luminosidad.

5 · Tono más allá de 360°

Entre dos tonos, un degradado puede recorrer la rueda de colores en uno u otro sentido, y la mayoría de las herramientas toman el camino más corto. Grabient deja que el tono siga contando más allá de 360°: 690° es el mismo color que 330°, una vuelta después. El degradado recorre todo el camino:

Las dos barras terminan en el mismo color. Arriba: tono de 210° a 330°. Abajo: de 210° a 690°, una vuelta más.

El recorrido de una paleta es su último tono menos el primero, vueltas incluidas, así que un arcoíris completo recorre 360°. Dos fotogramas clave contiguos pueden estar separados hasta 540°.

6 · Colores que una pantalla no puede mostrar

OKLCH puede describir colores más vivos de lo que una pantalla puede mostrar. En esos casos, Grabient mantiene la luminosidad y el tono, y reduce el croma hasta que el color quepa: sRGB en una pantalla estándar, Display P3 en una de gama amplia. CSS Color 4 hace lo mismo con los colores oklch():

Croma
0.350
Línea punteada: el croma pedido. Línea continua: lo que muestra la pantalla. Arrastra la línea para pedir más o menos.

7 · Recetas

Algunas paletas y las curvas que las forman:

Atardecer: la luminosidad baja de 0.86 a 0.32, el croma alcanza su máximo en 0.19 y el tono gira del amarillo al carmesí.Editar
Espectro: dos fotogramas clave con la misma luminosidad y el mismo croma, y un tono que recorre 360°.Editar
Duotono: dos fotogramas clave muy separados en luminosidad (0.92 y 0.22) y a 130° de distancia en tono.Editar
Colores pastel: luminosidad alta (0.87 o más) y croma bajo (0.06 o menos).Editar
Grises: croma 0 en cada fotograma clave.Editar

Invertir orden pone los fotogramas clave en el orden opuesto. Invertir colores crea un negativo: cada luminosidad L pasa a ser 1 − L, y cada tono gira 180°.

8 · La semilla

La dirección de cada paleta contiene su semilla, un código corto de sus fotogramas clave. La semilla de la primera figura es kW6iw33i87sY6O2wq7rmZ07I.

Una semilla es una k seguida de los fotogramas clave empaquetados en bits: 8 para la luminosidad, 8 para el croma, 9 para el primer tono y luego 10 para cada tono siguiente, almacenado como el cambio respecto al anterior:

Dos fotogramas clave dan una semilla de 11 caracteres, y ocho, una de 37. Cada paleta tiene exactamente una semilla.

Un fotograma clave definido a partir de un color hex conserva ese color exacto, en 24 bits. Una semilla así tiene de 9 a 50 caracteres.