Akses lebih banyak warna dan ruang baru

Dokumen ini adalah bagian dari panduan warna CSS definisi tinggi.

CSS Color 4 menguraikan banyak fitur dan alat untuk CSS dan warna. Codepen berikut menunjukkan semua dan sintaks warna lama bersama-sama:

Baca ringkasan ruang warna klasik.

Spesifikasi level 4 memperkenalkan 12 ruang warna baru untuk mencari warna, mulai dari 7 gamut baru yang dibagikan sebelumnya:

Lihat ruang warna web baru

Ruang warna berikut menawarkan akses ke gamut yang lebih besar daripada sRGB. Tujuan ruang warna display-p3 menawarkan warna hampir dua kali lebih banyak dari RGB, sedangkan Rec2020 menawarkan hampir dua kali lipat display-p3. Banyak sekali warna.

Lima segitiga bertumpuk dengan berbagai warna untuk membantu mengilustrasikan
  hubungan dan ukuran masing-masing ruang warna baru.

Fungsi color()

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Yang baru color() fungsi yang dapat digunakan untuk ruang warna apa pun yang menentukan warna dengan R, G, dan B saluran TV Anda. color() mengambil parameter ruang warna terlebih dahulu, lalu serangkaian nilai saluran untuk RGB dan opsional beberapa alfa.

Anda akan menemukan banyak ruang warna baru menggunakan fungsi ini karena memiliki fungsi khusus seperti rgb, srgb, hsl, hwb, dll., berkembang menjadi daftar panjang, lebih mudah untuk mengatur ruang warna menjadi parameter.

Kelebihan

  • Ruang yang dinormalkan untuk mengakses ruang warna yang menggunakan saluran RGB.
  • Dapat menskalakan hingga ruang warna berbasis RGB gamut yang luas.

Kekurangan

  • Tidak berfungsi dengan HSL, HWB, LCH, okLCH, atau okLAB
.valid-css-color-function-colors {
  --srgb: color(srgb 1 1 1);
  --srgb-linear: color(srgb-linear 100% 100% 100% / 50%);
  --display-p3: color(display-p3 1 1 1);
  --rec2020: color(rec2020 0 0 0);
  --a98-rgb: color(a98-rgb 1 1 1 / 25%);
  --prophoto: color(prophoto-rgb 0% 0% 0%);
  --xyz: color(xyz 1 1 1);
}

sRGB melalui color()

Segitiga sRGB adalah satu-satunya segitiga yang sepenuhnya buram, untuk membantu memvisualisasikan ukuran gamut.

Ruang warna ini menawarkan fitur yang sama dengan rgb(). Alat ini juga menawarkan desimal antara 0 dan 1, digunakan tepat seperti 0% hingga 100%.

Kelebihan

  • Hampir semua layar mendukung rentang ruang warna ini.
  • Dukungan alat desain.

Kekurangan

  • Tidak linear secara persepsi (seperti lch() adalah)
  • Tidak ada warna gamut yang luas.
  • Gradien sering kali melewati zona mati.
.valid-css-srgb-colors {
  --percents: color(srgb 34% 58% 73%);
  --decimals: color(srgb .34 .58 .73);

  --percents-with-opacity: color(srgb 34% 58% 73% / 50%);
  --decimals-with-opacity: color(srgb .34 .58 .73 / .5);

  /* empty */
  --empty-channels-black: color(srgb none none none);
  --empty-channels-black2: color(srgb);
}

sRGB linear melalui color() {#linear-sRGB}

Segitiga sRGB adalah satu-satunya segitiga yang sepenuhnya buram, untuk membantu memvisualisasikan ukuran gamut.

Alternatif linier untuk RGB ini menawarkan intensitas saluran yang dapat diprediksi.

Kelebihan

  • Akses langsung ke saluran RGB, berguna untuk berbagai hal seperti game engine atau pertunjukan cahaya.

Kekurangan

  • Tidak linear secara persepsi.
  • Warna hitam dan putih memenuhi bagian tepi.
.valid-css-srgb-linear-colors {
  --percents: color(srgb-linear 34% 58% 73%);
  --decimals: color(srgb-linear .34 .58 .73);

  --percents-with-opacity: color(srgb-linear 34% 58% 73% / 50%);
  --decimals-with-opacity: color(srgb-linear .34 .58 .73 / .5);

  /* empty */
  --empty-channels-black: color(srgb-linear none none none);
  --empty-channels-black2: color(srgb-linear);
}

Gradien akan dibahas secara mendetail nanti, tetapi dengan cepat itu berarti melihat srgb dan linear-srgb dari hitam ke putih gradien untuk menggambarkan perbedaannya:

Dua gradien horizontal ditampilkan dalam dua baris untuk memudahkan perbandingan. Gradien sRGB halus, seperti yang telah kita lihat selama bertahun-tahun. Gradien sRGB-linear meskipun sangat gelap pada 5% pertama dan sangat terang pada 10% terakhir, membuat bagian tengah berwarna abu-abu sangat terang untuk waktu yang lama.

LCH

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

LCH memperkenalkan sintaksis untuk mengakses warna di luar gamut RGB. Hal ini juga yang pertama membuat proses pembuatan di luar gamut warna untuk tampilan. Hal ini terjadi karena warna ruang CIE (lch, oklch, lab, oklab) dapat mewakili seluruh spektrum warna yang terlihat manusia.

Ruang warna ini dimodelkan berdasarkan penglihatan manusia dan menawarkan sintaks untuk menentukan salah satu dari warna itu dan banyak lagi. Saluran LCH bersifat ringan, kroma dan rona. Rona adalah sudut, seperti dalam HSL dan HWB. Pencahayaan adalah nilai antara 0 dan 100. Ini adalah visualisasi khusus {i>human-centric<i} ringan. Kroma mirip dengan saturasi; dapat berkisar dari 0 hingga 230, tetapi secara teknis tidak terbatas.

Kelebihan

  • Manipulasi warna yang dapat diprediksi berkat sifatnya yang linier secara persepsi, sebagian besar (lihat oklch).
  • Menggunakan saluran yang sudah dikenal.
  • Sering kali memiliki gradien yang cerah.

Kekurangan

  • Mudah diselesaikan.
  • Terkadang, gradien memerlukan titik tengah penyesuaian untuk mencegah pergeseran hue.
.valid-css-lch-colors {
  --percent-and-degrees: lch(58% 32 241deg);
  --just-the-degrees: lch(58 32 241deg);
  --minimal: lch(58 32 241);

  --percent-opacity: lch(58% 32 241 / 50%);
  --decimal-opacity: lch(58% 32 241 / .5);

  /* chromaless and hueless */
  --empty-channels-white: lch(100 none none);
  --empty-channels-black: lch(none none none);
}

LAB

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Ruang warna lain yang dibuat untuk mengakses gamut CIE, sekali lagi dengan dimensi kecerahan linear (L). A dan B di LAB mewakili sumbu unik dari penglihatan warna manusia: merah-hijau, dan biru-kuning. Ketika A diberi nilai positif maka akan menambahkan warna merah, dan hijau ketika berada di bawah 0. Ketika B diberi bilangan positif warna kuning ditambahkan, di mana nilai negatif mendekati biru.

Kelebihan

  • Gradien yang konsisten secara persepsi.
  • Rentang dinamis tinggi.

Kekurangan

  • Potensi perubahan hue.
  • Sulit untuk menulis tangan atau menebak warna saat membaca nilai.
.valid-css-lab-colors {
  --percent-and-degrees: lab(58% -16 -30);
  --minimal: lab(58 -16 -30);

  --percent-opacity: lab(58% -16 -30 / 50%);
  --decimal-opacity: lab(58% -16 -30 / .5);

  /* chromaless and hueless */
  --empty-channels-white: lab(100 none none);
  --empty-channels-black: lab(none none none);
}

OKLCH

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.4.

Sumber

Ruang warna ini bersifat korektif untuk LCH. Dan seperti LCH, (L) terus mewakili ringan yang linier secara persepsi, untuk kroma dan H untuk hue.

Ruang ini terasa familier jika Anda telah bekerja dengan HSL atau LCH. Pilih sudut pada roda warna untuk H, pilih kecerahan atau tingkat kegelapan dengan menyesuaikan L, tapi kemudian kita memiliki kroma alih-alih saturasi. Mereka cukup identik kecuali bahwa penyesuaian pada kecerahan dan kroma cenderung berpasangan, atau meminta warna kroma tinggi yang cocok untuk Anda di luar gamut target.

Kelebihan

  • Tidak ada kejutan saat bekerja dengan rona biru dan ungu.
  • Ringan secara persepsi linear.
  • Menggunakan saluran yang sudah dikenal.
  • Rentang dinamis tinggi.
  • Memiliki pemilih warna modern - oleh Evil Martians.

Kekurangan

  • Mudah diselesaikan.
  • Baru dan belum terjamah.
  • Sedikit pemilih warna.
.valid-css-oklch-colors {
  --percent-and-degrees: oklch(64% .1 233deg);
  --just-the-degrees: oklch(64 .1 233deg);
  --minimal: oklch(64 .1 233);

  --percent-opacity: oklch(64% .1 233 / 50%);
  --decimal-opacity: oklch(64% .1 233 / .5);

  /* chromaless and hueless */
  --empty-channels-white: oklch(100 none none);
  --empty-channels-black: oklch(none none none);
}

OKE

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.4.

Sumber

Ruang ini bersifat korektif untuk LAB. VM ini juga diklaim sebagai ruang yang dioptimalkan untuk kualitas pemrosesan gambar, yang digunakan kita di CSS berarti gradien dan kualitas manipulasi fungsi warna.

Kelebihan

  • Ruang default untuk animasi dan interpolasi.
  • Ringan secara persepsi linear.
  • Tidak ada perubahan hue seperti LAB.
  • Gradien yang konsisten secara persepsi.

Kekurangan

  • Baru dan belum terjamah.
  • Sedikit pemilih warna.
.valid-css-oklab-colors {
  --percent-and-degrees: oklab(64% -.1 -.1);
  --minimal: oklab(64 -.1 -.1);

  --percent-opacity: oklab(64% -.1 -.1 / 50%);
  --decimal-opacity: oklab(64% -.1 -.1 / .5);

  /* chromaless and hueless */
  --empty-channels-white: oklab(100 none none);
  --empty-channels-black: oklab(none none none);
}

Tampilan P3

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Tampilan segitiga P3 adalah satu-satunya 
yang sepenuhnya buram, untuk membantu
  memvisualisasikan ukuran gamut. Namanya terlihat seperti nomor 2 dari terkecil.

Tampilan P3 gamut dan ruang warna menjadi populer sejak Apple didukung sejak 2015 di iMac. Apple juga mendukung display-p3 di halaman web melalui CSS sejak 2016, lima bertahun-tahun dibandingkan browser lainnya. Jika berasal dari sRGB, ini adalah warna yang bagus ruang untuk mulai dikerjakan saat Anda memindahkan gaya ke rentang dinamis yang lebih tinggi.

Kelebihan

  • Dukungan luar biasa, yang dianggap sebagai dasar untuk layar HDR.
  • 50% lebih banyak warna daripada sRGB.
  • DevTools menawarkan pemilih warna yang bagus.

Kekurangan

  • Pada akhirnya akan dilampaui oleh ruang Rec2020 dan CIE.
.valid-css-display-p3-colors {
  --percents: color(display-p3 34% 58% 73%);
  --decimals: color(display-p3 .34 .58 .73);

  --percent-opacity: color(display-p3 34% 58% 73% / 50%);
  --decimal-opacity: color(display-p3 .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(display-p3 none none none);
  --empty-channels-black2: color(display-p3);
}

Rec2020

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Segitiga Rec2020 adalah satu-satunya
yang sepenuhnya buram, untuk membantu
  memvisualisasikan ukuran gamut. Sepertinya ada yang ke-2 dari yang terbesar.

Rec2020 adalah bagian dari pergerakan menuju UHDTV (televisi definisi ultra tinggi), yang menyediakan berbagai macam warna untuk digunakan dalam media 4K dan 8K. Rec2020 adalah salah satu Gamut berbasis RGB, lebih besar dari display-p3, tetapi tidak hampir umum di antara konsumen sebagai Display P3.

Kelebihan

  • Warna Ultra HD.

Kekurangan

  • Belum umum di kalangan konsumen.
  • Tidak biasa ditemukan pada perangkat genggam atau tablet.
.valid-css-rec2020-colors {
  --percents: color(rec2020 34% 58% 73%);
  --decimals: color(rec2020 .34 .58 .73);

  --percent-opacity: color(rec2020 34% 58% 73% / 50%);
  --decimal-opacity: color(rec2020 .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(rec2020 none none none);
  --empty-channels-black2: color(rec2020);
}

RGB A98 {#a98-RGB}

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Segitiga A98 adalah satu-satunya
yang sepenuhnya buram, untuk membantu
  memvisualisasikan ukuran gamut. Terlihat seperti segitiga berukuran tengah.

Singkatan dari Adobe 1998 RGB, A98 RGB dibuat oleh Adobe untuk menampilkan sebagian besar warna yang dapat dicapai dari {i>printer<i} CMYK. Mode ini menawarkan lebih banyak warna daripada sRGB, terutama dalam rona sian dan hijau.

Kelebihan

  • Lebih besar dari ruang warna sRGB dan Display P3.

Kekurangan

  • Bukan tempat umum yang ditempati oleh desainer digital.
  • Tidak banyak orang yang melakukan porting palet dari CMYK.
.valid-css-a98-rgb-colors {
  --percents: color(a98-rgb 34% 58% 73%);
  --decimals: color(a98-rgb .34 .58 .73);

  --percent-opacity: color(a98-rgb 34% 58% 73% / 50%);
  --decimal-opacity: color(a98-rgb .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(a98-rgb none none none);
  --empty-channels-black2: color(a98-rgb);
}

RGB ProPhoto

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Segitiga ProPhoto adalah satu-satunya yang sepenuhnya buram, untuk membantu
  memvisualisasikan ukuran gamut. Sepertinya yang terbesar.

Dibuat oleh Kodak, ruang gamut lebar ini secara unik menawarkan rentang latar depan ultra-wide warna dan memiliki perubahan rona minimal saat mengubah kecerahan. Perusahaan ini juga mengklaim mencakup 100% dari warna permukaan yang sebenarnya seperti yang didokumentasikan oleh Michael Pointer pada tahun 1980.

Kelebihan

  • Perubahan hue minimal saat mengubah kecerahan.
  • Warna primer cerah.

Kekurangan

  • Sekitar 13% warna yang ditawarkan adalah imajiner, yang berarti tidak berada dalam spektrum yang terlihat manusia.
.valid-css-prophoto-rgb-colors {
  --percents: color(prophoto-rgb 34% 58% 73%);
  --decimals: color(prophoto-rgb .34 .58 .73);

  --percent-opacity: color(prophoto-rgb 34% 58% 73% / 50%);
  --decimal-opacity: color(prophoto-rgb .34 .58 .73 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(prophoto-rgb none none none);
  --empty-channels-black2: color(prophoto-rgb);
}

XYZ, XYZ-d50, XYZ-d65

Dukungan Browser

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Sumber

Ruang warna CIE XYZ mencakup semua warna yang terlihat oleh seseorang dengan kemampuan penglihatan rata-rata. Inilah sebabnya mengapa warna ini digunakan sebagai referensi standar untuk warna lain spasi. Y adalah luminans, X dan Z adalah kemungkinan kroma dalam Y yang ditentukan luminans.

Perbedaan antara d50 dan d65 adalah titik putih, di mana d50 menggunakan d50 titik putih dan d65 menggunakan titik putih d65.

Istilah Utama: Titik putih adalah atribut ruang warna, yang merupakan tempat warna putih yang sebenarnya ada di dalam ruang itu. Untuk layar elektronik, D65 adalah titik putih biasa, dan kependekan dari 6500 kelvin. Sangat penting untuk warna konversi warna putih yang sesuai dengan suhu warna (kehangatan atau kesejukan) tidak terpengaruh.

Kelebihan

  • Akses linear ringan memiliki kasus penggunaan yang praktis.
  • Sangat cocok untuk pencampuran warna fisik.

Kekurangan

  • Tidak linear secara persepsi seperti lch, oklch, lab, dan oklab.
.valid-css-xyz-colors {
  --percents: color(xyz 22% 26% 53%);
  --decimals: color(xyz .22 .26 .53);

  --percent-opacity: color(xyz .22 .26 .53 / 50%);
  --decimal-opacity: color(xyz .22 .26 .53 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(xyz none none none);
  --empty-channels-black2: color(xyz);
}
.valid-css-xyz-d50-colors {
  --percents: color(xyz-d50 22% 26% 53%);
  --decimals: color(xyz-d50 .22 .26 .53);

  --percent-opacity: color(xyz-d50 .22 .26 .53 / 50%);
  --decimal-opacity: color(xyz-d50 .22 .26 .53 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(xyz-d50 none none none);
  --empty-channels-black2: color(xyz-d50);
}
.valid-css-xyz-d65-colors {
  --percents: color(xyz-d65 22% 26% 53%);
  --decimals: color(xyz-d65 .22 .26 .53);

  --percent-opacity: color(xyz-d65 .22 .26 .53 / 50%);
  --decimal-opacity: color(xyz-d65 .22 .26 .53 / .5);

  /* chromaless and hueless */
  --empty-channels-black: color(xyz-d65 none none none);
  --empty-channels-black2: color(xyz-d65);
}

Ruang warna khusus

Spesifikasi Warna CSS 5 juga memiliki jalur untuk mengajari browser tentang ruang warna kustom. Ini adalah profil ICC yang memberi tahu browser cara untuk me-resolve warna.

@color-profile --foo {
  src: url(path/to/custom.icc);
}

Setelah dimuat, akses warna dari profil kustom ini dengan fungsi color() dan menentukan nilai salurannya.

.valid-css-color-from-a-custom-profile {
  background: color(--foo 1 0 0);
}

Jenis interpolasi warna

Bertransisi dari satu warna ke warna lain dapat ditemukan dalam animasi, gradien dan pencampuran warna. Transisi ini biasanya ditetapkan sebagai warna awal dan sebuah warna akhir, sehingga browser diharapkan untuk berinterpolasi di antara keduanya. Interpolasi dalam hal ini berarti menghasilkan serangkaian warna di-antara untuk membuat transisi yang mulus alih-alih yang instan.

Dengan gradien, interpolasi adalah serangkaian warna di sepanjang bentuk. Dengan animasi adalah serangkaian warna dari waktu ke waktu.

@keyframes bg {
  0%, 100% {
    background: orange;
  }
  25% {
    background: magenta;
  }
  50% {
    background: lime;
  }
  75% {
    background: cyan;
  }
}

.circle {
  animation: bg 5s ease-in-out infinite;
}

Dengan gradien, warna di antara keduanya ditampilkan sekaligus:

Yang baru dalam interpolasi warna

Dengan penambahan gamut dan ruang warna baru, ada fitur baru opsi untuk interpolasi. Mengubah warna in hsl dari biru ke putih menghasilkan sesuatu yang sangat berbeda dari sRGB.

.classic-gradient-in-srgb {
  background: linear-gradient(to right, blue, white);
}

.new-gradient-in-hsl {
  background: linear-gradient(in hsl to right, blue, white);
}

Lalu apa yang terjadi jika Anda beralih dari warna dalam satu ruang ke warna dalam ruang yang benar-benar berbeda:

.gradient {
  /* oklab will be the common space */
  background: linear-gradient(to right, lch(29.6 131 301), hsl(330 100% 50%));
}

.lch {
  /* lch is specified */
  background: linear-gradient(in lch to right, lch(29.6 131 301), hsl(330 100% 50%));
}

Untungnya, Warna 4 spesifikasi berisi petunjuk untuk browser tentang cara menangani interpolasi ruang warna. Untuk .gradient, browser melihat perbedaan ruang warna dan menggunakan ruang warna default oklab.

Anda mungkin berpikir bahwa {i>browser<i} akan menggunakan {i>lch<i} sebagai ruang warna, karena itulah warna pertama, tetapi tidak. Itu sebabnya saya menunjukkan gradien perbandingan kedua .lch. Gradien .lch adalah gradien dari ruang warna lch.

Lebih sedikit garis berwarna berkat warna 16-bit

Sebelum warna ini berfungsi, semua warna disimpan dalam satu bilangan bulat 32-bit untuk mewakili keempat saluran; merah, hijau, biru, dan alfa. Ini adalah 8-bit per saluran dan 2^ 24 kemungkinan warna (mengabaikan alpha). 2 ^ 24 = 16.777.216, "jutaan warna."

Setelah warna ini berfungsi, empat nilai floating point 16-bit, setiap saluran memiliki {i>float<i}-nya sendiri, bukan digabungkan bersama-sama. Ini adalah total 64-bit, menghasilkan lebih dari jutaan warna.

Pekerjaan ini diperlukan untuk mendukung warna HD. Cara ini meningkatkan jumlah warna informasi yang dapat disimpan, yang memiliki efek sampingan menarik yang berarti ada lebih banyak warna untuk digunakan browser dalam gradien.

Gradient garis berwarna adalah ketika tidak ada cukup warna untuk membuat gradien yang halus dan "strip" warna menjadi terlihat. Banding sangat dimitigasi dengan mengubah ke warna resolusi yang lebih tinggi.

Enam panel ditampilkan, masing-masing dengan jumlah garis gradasi yang berbeda-beda
    dan sedikit informasi tentang 
kompresi dan kedalaman bit.
Sumber gambar

Interpolasi kontrol

Jarak terpendek antara dua titik selalu berupa garis lurus. Dengan warna interpolasi, browser mengambil rute pendek secara {i>default<i}. Pertimbangkan sebuah skenario di mana ada dua titik dalam tabung warna HSL. Gradien memperoleh langkah warna dengan berjalan di sepanjang garis di antara dua titik.

linear-gradient(to right, #94e99c, #e06242)
Gradien lingkaran dengan garis dari hijau ke merah, lurus
    melewati lingkaran, melewati 
area putih.
(demonstrasi tiruan)
Tampilan top-down silinder HSL dengan garis di antara perhentian warna

Garis gradien di atas lurus antara warna kehijauan hingga kemerahan warna, yang melewati pusat ruang warna. Meskipun penjelasan di atas bagus untuk membantu pemahaman awal, itu tidak sama persis dengan apa yang terjadi. Berikut adalah gradien di Codepen berikut, dan jelas warnanya tidak putih di tengah seperti demonstrasi tiruan yang ditunjukkan.

Namun, area tengah gradien telah kehilangan kecerahannya. Hal ini karena warna yang paling cerah berada di tepi bentuk ruang warna, bukan di bagian di mana interpolasi melintas. Umumnya disebut sebagai "zona mati". Ada adalah beberapa cara untuk memperbaiki atau mengatasinya.

Menentukan lebih banyak batas gradien untuk menghindari zona mati

Teknik untuk menghindari zona mati saat ini adalah dengan menambahkan perhentian warna tambahan di gradien yang dengan sengaja memandu interpolasi untuk tetap berada dalam rentang ruang warna yang cerah. Ini benar-benar merupakan sebuah solusi, karena perhentian tambahan untuk membantunya mengatasi area mati.

Ada alat gradien yang dibuat oleh Erik Kennedy yang menghitung warna tambahan berhenti untuk Anda, untuk membantu Anda menghindari zona mati, bahkan dalam ruang warna tertarik pada hal tersebut. Dengan menggunakannya, meneruskan warna yang sama dari contoh pertama tetapi mengubah interpolasi warna menjadi HSL, ia menghasilkan ini:

linear-gradient(90deg, #94e99c, #99e789, #ace67d, #c4e472, #e2e366, #e2bf5a, #e1934e, #e06242);
Gradien melingkar dengan garis yang melengkung di sekitar bagian tengah dengan banyak
    gradien berhenti di sepanjang jalan, memandunya menjauh dari pusat.
(demonstrasi tiruan)
Tampilan silinder HSL dari atas ke bawah dengan garis melengkung yang menampilkan 9 perhentian warna

Dengan titik perhentian terpandu, interpolasi tidak lagi berupa garis lurus, tetapi tampak melengkung di sekitar zona mati, membantu mempertahankan saturasi, sehingga gradien yang jauh lebih cerah.

Meskipun alat ini bekerja dengan baik, bagaimana jika Anda dapat memiliki kontrol langsung dari CSS?

Mengarahkan interpolasi warna

Di Warna 4, kemampuan untuk mengontrol strategi interpolasi hue telah ditambahkan dan merupakan cara baru untuk mengatasi (:wink:) zona mati. Pikirkan tentang hue dan mempertimbangkan gradien 2 perhentian yang hanya mengubah sudut, berubah menjadi hue misalnya dengan beralih dari 140deg ke 240deg.

Jenis interpolasi hue yang lebih pendek vs yang lebih panjang

Gradien secara default mengambil shorter, kecuali jika memang demikian yang Anda tentukan agar aplikasi Rute longer. Rona Opsi interpolasi mengarahkan rotasi sudut, seperti menyuruh seseorang untuk memutar kiri, bukan kanan (heh, Zoolander):

Visual lingkaran gradien yang sama seperti sebelumnya, tapi kali ini ada
  lingkaran dalam yang digambar yang menunjukkan jalan jauh vs. jalan pendek.

Pada contoh jarak interpolasi hue, jalur pendek dan jalur yang panjang disimulasikan untuk mengilustrasikan perbedaannya. Jarak yang pendek itu lebih sedikit rona di antara keduanya karena ia melakukan perjalanan dengan jarak yang paling sedikit mungkin, di mana jarak yang jauh telah melewati lebih banyak warna.

Meningkatkan vs mengurangi interpolasi hue

Ada dua strategi interpolasi hue lainnya di Warna 4, tetapi keduanya eksklusif untuk silinder ruang warna. Dengan tetap menggunakan dua warna dari contoh sebelumnya, visualisasi sekarang menunjukkan cara kerja peningkatan dan penurunan.

Codepen di atas menggunakan ColorJS untuk mendemonstrasikan hasil yang diharapkan. CSS yang akan Anda tulis untuk mencapai efek yang sama tanpa Library JavaScript akan menjadi:

.longer-hue-interpolation-in-css {
  background: linear-gradient(
    to right in hsl longer hue,
    hsl(180deg 100% 75%),
    hsl(240deg 100% 75%)
  );
}

.decreasing-hue-interpolation-in-css {
  background: linear-gradient(
    to right in hsl decreasing hue,
    hsl(180deg 100% 75%),
    hsl(240deg 100% 75%)
  );
}

Untuk menutup interpolasi hue, berikut tempat seru yang dapat Anda gunakan untuk mengubah hue di antara 2 penghentian warna dan lihat efek pilihan interpolasi hue saat serta bagaimana ruang warna mengubah hasil gradien. Dampaknya bisa sangat different; anggaplah ini sebagai empat trik baru yang baru saja muncul di panel menu warna Anda.

Gradien dalam berbagai ruang warna

Setiap ruang warna, dengan bentuk dan pengaturan warnanya yang unik, menghasilkan gradien yang berbeda. Pada contoh berikut, lihat bagaimana setiap ruang warna menanganinya secara berbeda, terutama pada warna biru ke putih. Perhatikan berapa banyak menjadi ungu di tengah; yang disebut pergeseran hue selama interpolasi.

Beberapa gradien di ruang ini lebih cerah daripada yang lain, atau lebih jarang bergerak melalui zona mati. Ruang seperti lab menggabungkan warna dengan cara yang dioptimalkan untuk saturasi, seperti bukan ruang yang dioptimalkan bagi manusia untuk menulis warna seperti hwb().

.hwb {
  background: linear-gradient(to right, hwb(250 10% 10%), hwb(150 10% 10%));
}
.lab {
  background: linear-gradient(to right, lab(30 59.4 -96), lab(80 -64 36.2));
}

Demo di atas, meskipun hasilnya kecil, menunjukkan hasil yang lebih konsisten interpolasi dengan lab. Sintaks lab tidak mudah dibaca, ada angka negatif yang sangat asing bila berasal dari rgb atau hsl. Bagus kita dapat menggunakan {i>hwb<i} untuk sintaks yang sudah dikenal, tetapi meminta agar gradien diinterpolasi sepenuhnya di dalam ruang warna lain, seperti oklab.

.hwb {
  background: linear-gradient(in hwb to right, hwb(250 10% 10%), hwb(150 10% 10%));
}
.lab {
  background: linear-gradient(in oklab to right, hwb(250 10% 10%), hwb(150 10% 10%));
}

Contoh ini menggunakan warna yang sama di {i>hwb<i} tetapi menentukan ruang warna untuk interpolasi ke {i>hwb<i} atau {i>oklab<i}. hwb adalah ruang warna yang cocok untuk iklan cerah, tetapi mungkin ada zona mati atau titik terang (lihat titik panas sian contoh teratas). oklab sangat bagus untuk gradien linier perseptual yang tetap saturasi. Fitur ini sangat menyenangkan karena Anda bisa mencoba beberapa warna berbeda spasi untuk melihat gradien mana yang paling Anda sukai.

Berikut adalah Codepen yang bereksperimen dengan gradien dan ruang warna, mencampur dan strategi yang cocok untuk mengeksplorasi kemungkinannya. Bahkan transisi dari kulit hitam menjadi putih berbeda di setiap ruang warna!

Penjepit gamut

Ada beberapa skenario saat warna dapat meminta sesuatu di luar gamut. Pertimbangkan warna berikut:

rgb(300 255 255)

Jumlah maksimum untuk saluran warna dalam ruang warna rgb adalah 255, tetapi di sini 300 telah ditentukan untuk warna merah. Apa yang terjadi? Penjepit gamut.

Penjepit adalah ketika informasi tambahan dihapus begitu saja. 300 menjadi 255 secara internal ke mesin warna. Warna kini telah dibulatkan di dalam ruang.

Memilih ruang warna

Setelah mempelajari ruang warna dan efeknya, banyak orang yang merasakan kewalahan dan ingin tahu "yang mana" untuk memilih. Dari studi saya dan pengalaman, saya tidak melihat satu ruang warna sebagai satu-satunya untuk semua tugas saya. Masing-masing memiliki momen ketika mereka menghasilkan hasil yang diinginkan.

Jika ada satu ruang terbaik, maka tidak akan ada begitu banyak ruang baru yang diperkenalkan.

Namun, saya dapat mengatakan bahwa ruang CIE—lab, oklab, lch, dan oklch—adalah tempat awal. Jika hasilnya bukan yang saya cari, maka saya akan menguji ruang lain. Untuk mencampur warna dan membuat gradien, saya setuju dengan pilihan spesifikasi default oklab. Untuk sistem warna dan warna UI secara keseluruhan, saya suka oklch.

Berikut adalah beberapa artikel di mana orang-orang berbagi warna terbaru mereka strategi yang diberikan pada ruang warna dan fitur baru ini. Misalnya, Andrey Sitnik sudah berusaha oklch, mungkin mereka akan meyakinkan Anda untuk melakukan hal yang sama:

  1. OKLCH di CSS: mengapa kita beralih dari RGB dan HSL dengan Andrey Sitnik
  2. Format Warna oleh Josh W. Comeau
  3. OK, OKLCH oleh Chris Coyier

Langkah berikutnya

Setelah terbiasa dengan alat dan ruang warna baru, Anda dapat bermigrasi ke warna HD.

Manipulasi dan interpolasi yang lebih jelas serta konsisten dan secara keseluruhan memberikan pengalaman yang lebih berwarna bagi pengguna Anda.

Baca referensi warna selengkapnya dari panduan.