İçeriğe geç

Grabient hakkında

Grabient, gradyanları anahtar karelerden oluşturur: yumuşak bir eğriyle birleştirilen 2 ile 8 arası renk.

1 · Anahtar kareler

Anahtar kare, seçtiğiniz bir renktir. Animasyonda olduğu gibi birkaçını belirlersiniz ve aralarındaki renkler doldurulur. Bir palette, gradyan boyunca eşit aralıklarla dizilen 2 ile 8 arası anahtar kare bulunur; gradyan her birinden geçer:


Açıklık başlangıcı
Açıklık bitişi
10

Kroma
0.300

Ton
Mesafe
90°-90°

Noktalar anahtar karelerdir. Grafik, gradyan boyunca açıklığı, kromayı ve tonu gösterir. Bir anahtar kareyi değiştirmek için bir noktayı sürükleyin.

Her anahtar kare, OKLCH uzayında üç sayıdan oluşur. Açıklık L, 0'dan (siyah) 1'e (beyaz) uzanır. Kroma C, rengin ne kadar renkli olduğunu gösterir: 0 gri demektir, ekrandaki en canlı renkler ise 0.3 civarındadır. Ton H, renk çemberindeki derece cinsinden açıdır.

2 · Formül

Açıklık, kroma ve tonun her birinin, yukarıdaki grafikte çizilen kendi eğrisi vardır. Her eğri anahtar karelerden geçer ve aralarında yumuşakça kıvrılır. Herhangi bir noktadaki renk, üç eğrinin o noktadaki değerleridir.

CSS ve Figma gradyanları renk duraklarını düz çizgilerle birleştirir; bu yüzden geçişin hız değiştirdiği yerde silik bir kenar görünebilir.

Formülde t, gradyanın başındaki 0'dan sonundaki 1'e kadar ilerler. K anahtar kare varken, 0'dan sayılan i numaralı anahtar kare t = i / (K − 1) konumundadır. Her eğri bir Catmull–Rom spline eğrisidir ve gamut() rengi ekrana sığdırır (6. bölüm):

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 · Adımlar

Grabient gradyanı çizmek için eşit aralıklı noktalardan renk alır; bunlara adım denir. İlk ve son adım, ilk ve son anahtar karedir. Gradyan stilleri adımları renk durakları olarak kullanır. Şerit stilleri her adımı düz renkli bir şerit olarak gösterir. Adım sayısı hiçbir zaman anahtar kare sayısından az olmaz:

7 adımda aynı palet. Noktalar anahtar kareleri işaretler.
Adım

4 · Neden OKLCH

RGB ve HSL, bir ekranın ışığı nasıl karıştırdığını tanımlar ve sayıları çoğu zaman gördüğümüzle örtüşmez. Saf sarının da saf mavinin de HSL açıklığı %50'dir, yine de sarı çok daha açık görünür. OKLCH onlara 0.97 ve 0.45 değerlerini verir. OKLCH, Björn Ottosson'un OKLab uzayının kutupsal biçimidir ve sayılarındaki eşit değişimler eşit görünsün diye tasarlanmıştır. İki yolla da karıştırılmış iki renk:

RGB uzayında (üstte) ve OKLCH uzayında (altta) karıştırılan yeşil ve macenta. RGB karışımı ortada grileşir.

Açıklık, kroma ve ton birbirinden ayrı olduğu için bir anahtar karenin tonunu değiştirmek açıklığını korur.

5 · 360°'yi aşan ton

İki ton arasında bir gradyan, renk çemberinde iki yönden birini izleyebilir ve çoğu araç kısa yolu seçer. Grabient, tonun 360°'yi aşmasına izin verir: 690°, bir tur fazlasıyla 330° ile aynı renktir. Gradyan yolun tamamını kat eder:

İki şerit de aynı renkte biter. Üstte: ton 210°'den 330°'ye. Altta: 210°'den 690°'ye, bir tur daha.

Bir paletin ton mesafesi, turlar dâhil, son tonu eksi ilk tonudur; bu yüzden tam bir gökkuşağının mesafesi 360°'dir. Komşu anahtar kareler arasındaki fark 540°'ye kadar çıkabilir.

6 · Ekranın gösteremediği renkler

OKLCH, bir ekranın gösterebileceğinden daha canlı renkleri tanımlayabilir. Grabient bu renklerde açıklığı ve tonu korur, kromayı ise renk sığana kadar düşürür: standart bir ekranda sRGB'ye, geniş gamlı bir ekranda Display P3'e. CSS Color 4 de oklch() renkleri için aynısını yapar:

Kroma
0.350
Noktalı çizgi: istenen kroma. Kesintisiz çizgi: ekranın gösterdiği kroma. Daha fazlasını ya da daha azını istemek için çizgiyi sürükleyin.

7 · Tarifler

Birkaç palet ve onları oluşturan eğriler:

Gün batımı: açıklık 0.86'dan 0.32'ye düşer, kroma 0.19 ile zirve yapar ve ton sarıdan kızıla döner.Düzenle
Spektrum: açıklığı ve kroması eşit iki anahtar kare ve 360° ilerleyen ton.Düzenle
Duoton: açıklıkları birbirinden çok uzak (0.92 ve 0.22) ve tonları arasında 130° fark olan iki anahtar kare.Düzenle
Pasteller: yüksek açıklık (0.87 ve üzeri) ve düşük kroma (0.06 ve altı).Düzenle
Griler: her anahtar karede kroma 0.Düzenle

"Sırayı çevir", anahtar kareleri ters sıraya dizer. "Ters çevir" ise bir negatif oluşturur: her L açıklığı 1 − L olur ve her ton 180° döner.

8 · Tohum

Her paletin adresi, anahtar kareleri için kısa bir kod olan tohumunu taşır. İlk şeklin tohumu: kW6iw33i87sY6O2wq7rmZ07I.

Tohum, k harfi ve onu izleyen, bitlere paketlenmiş anahtar karelerden oluşur: açıklık için 8, kroma için 8, ilk ton için 9, ardından bir öncekinden farkı olarak saklanan sonraki her ton için 10:

İki anahtar kare 11 karakterlik, sekiz anahtar kare ise 37 karakterlik bir tohum oluşturur. Her paletin tam olarak bir tohumu vardır.

Hex renkle belirlenen bir anahtar kare, tam o rengi 24 bit olarak korur. Böyle bir tohum 9 ile 50 karakter arasındadır.