Kedalaman dan tekstur
- Lapisi beberapa bayangan untuk efek kedalaman lembut yang realistis.
- Gunakan
filter: drop-shadow(), bukanbox-shadow, untuk bentuk non-persegi panjang atau PNG transparan. - Gunakan
mix-blend-modedanbackground-blend-modeuntuk overlay pencahayaan (batasi cakupan denganisolation: isolate)
.hero {
background-image: url('texture.png'), linear-gradient(to bottom, #fff, #eee);
background-blend-mode: soft-light;
}
Gradien dan color-mix()
Gunakan in oklch atau in oklab untuk menentukan ruang warna interpolasi secara eksplisit untuk gradien atau color-mix().
in oklchmempertahankan kroma dengan lebih baik, tetapi dapat lebih mudah keluar dari gamut perangkat, terutama untuk perbedaan warna yang lebih besarin oklabtetap berada dalam gamut dengan lebih mudah (dengan asumsi endpoint dalam gamut), tetapi dapat menghasilkan warna desaturasi yang pudar di tengah, terutama saat melakukan interpolasi antara hue yang berlawanan.- JANGAN gunakan
in srgbkecuali jika Anda memiliki alasan khusus untuk melakukannya (misalnya, Anda sedang membuat pemilih warna yang perlu diinterpolasi dalam srgb).
Pengganti
Beberapa browser sebelum tahun 2024 tidak mendukung ruang interpolasi warna gradien. Untuk mendukung browser ini, gunakan token hanya jika penggunaannya aman dengan menentukan variabel:
:root {
--in-oklab: ;
--in-oklch: ;
}
@supports (linear-gradient(in oklab, white, black)) {
:root {
--in-oklab: in oklab;
--in-oklch: in oklch;
}
}
Kemudian, gunakan seperti:
.card {
background: linear-gradient(to bottom var(--in-oklab), var(--accent-color), var(--darker));
}
- Penting: Jika Anda menggunakan teknik ini, pastikan selalu ada preamble gradien yang tidak kosong tanpanya, jika tidak, akan terjadi error sintaksis di browser lama.
- Anda TIDAK memerlukan ini untuk
color-mix(). Jika browser mendukungcolor-mix(), browser tersebut juga mendukung argumenin <color-space>-nya.
Pola
Banyak pola dapat dibuat melalui gradien CSS + hard stop, dan pola ini dapat lebih fleksibel dan berperforma lebih baik daripada SVG atau gambar eksternal karena dapat memiliki akses ke variabel dan panjang CSS dari konteks di sekitarnya.
Anda tidak perlu mengulangi posisi dua kali — cukup gunakan 0 atau 0% dan perbaikan gradien akan otomatis menyesuaikannya.
Contohnya di bawah ini.
Garis vertikal dengan lebar masing-masing 1em:
background: linear-gradient(to right, var(--color-1) 50%, var(--color-2) 0) 0 / 2em;
Garis-garis diagonal dengan lebar masing-masing 1em:
background: repeating-linear-gradient(-45deg, var(--color-1) 0 1em, var(--color-2) 0 2em);
Pola papan catur dengan 1em kotak:
background: repeating-conic-gradient(var(--color-1) 0 25%, var(--color-2) 0 50%) 0 / 2em 2em;
Polkadot dengan titik radius .5em yang berjarak 2em (secara horizontal/vertikal — kalikan dengan sqrt(2) untuk jarak diagonal):
--distance: 2em;
--radius: .5em;
--polka: radial-gradient(circle, var(--color-1) var(--radius), transparent calc(var(--radius) + 1px));
background: var(--polka) 0 0, var(--polka) var(--distance) var(--distance) var(--color-2);
background-size: calc(var(--distance) * 2) calc(var(--distance) * 2);
Diagram lingkaran sederhana:
.pie {
--p: 80%;
width: 60px;
aspect-ratio: 1;
border-radius: 50%;
background: conic-gradient(var(--color-1) var(--p), transparent 0%) var(--color-2);
}
Penting: Saat menggunakan gradien untuk merender diagram, pastikan ada penggantian tekstual untuk pembaca layar. WAJIB: Anda HARUS menyediakan tabel data semantik sebagai alternatif yang mudah diakses, seperti yang dijelaskan dalam Panduan Coding Aksesibilitas di bagian panduan teks dan media alternatif.