Memburamkan elemen
filter: blur() menerima sebuah panjang, yaitu radius blur. Makin besar nilainya, makin buram elemennya:
filter berfungsi pada elemen apa pun, tidak hanya gambar: div yang diburamkan juga memburamkan teks, border, dan anak-anaknya. Perhatikan tepi yang lembut pada gambar yang buram: blur menyebarkan gambar ke luar dan mencampurnya dengan area transparan di sekitarnya. Solusinya ada di bawah, di bagian "Masalah tepi yang buram".
Memburamkan background: backdrop-filter
Untuk memburamkan apa yang ada di belakang elemen (panel kaca buram di atas foto atau halaman), pakai backdrop-filter. Konten elemen itu sendiri tetap tajam. Properti ini butuh background yang tembus pandang agar blur-nya terlihat:
Garis dan lingkaran terlihat tajam di sekitar panel dan buram di belakangnya, sementara teks panel tidak tersentuh. Jaga teks tetap terbaca: warna background yang sedikit lebih terang atau lebih gelap membantu di atas gambar yang ramai.
Setiap fungsi filter, secara langsung
Geser slider mana saja. Baris di bawah gambar adalah nilai filter yang persis, siap disalin:
Hanya fungsi yang kamu geser dari nilai netralnya yang ditulis, supaya nilainya tetap pendek. brightness(1) atau blur(0px) tidak mengubah apa-apa, jadi tidak ada alasan untuk mencantumkannya.
Fungsi-fungsi filter
| Fungsi | Nilai netral | Fungsinya | Contoh |
|---|---|---|---|
blur(r) | 0 | Gaussian blur dengan radius r | blur(4px) |
brightness(n) | 1 | lebih gelap di bawah 1, lebih terang di atasnya | brightness(0.7) |
contrast(n) | 1 | lebih datar di bawah 1, lebih tegas di atasnya | contrast(1.3) |
grayscale(n) | 0 | 1 (atau 100%) berarti abu-abu sepenuhnya | grayscale(100%) |
sepia(n) | 0 | nada cokelat yang hangat | sepia(0.6) |
saturate(n) | 1 | 0 berarti abu-abu, di atas 1 lebih pekat | saturate(1.5) |
hue-rotate(a) | 0deg | menggeser setiap hue di sepanjang roda warna | hue-rotate(90deg) |
invert(n) | 0 | 1 berarti negatif warna penuh | invert(1) |
opacity(n) | 1 | seperti properti opacity | opacity(0.5) |
drop-shadow(x y blur color) | bayangan yang mengikuti bentuk | drop-shadow(2px 4px 6px rgb(0 0 0 / 0.3)) |
Angka juga bisa berupa persentase (grayscale(100%) sama dengan grayscale(1)). Beberapa fungsi bisa ditulis dalam satu nilai, dipisahkan spasi, dan diterapkan sesuai urutan: filter: grayscale(1) sepia(1) menghasilkan warna kecokelatan, sedangkan sepia(1) grayscale(1) berakhir abu-abu biasa.
drop-shadow mengikuti bentuk
box-shadow selalu berbentuk persegi panjang (paling banter dengan sudut membulat). drop-shadow() digambar dari piksel yang terlihat, jadi ikon transparan mendapat bayangan dengan garis bentuk ikon itu:
Bintang pertama menghasilkan bayangan persegi dari kotak pembatasnya yang tidak terlihat. Bintang kedua menghasilkan bayangan berbentuk bintang. Berbeda dengan box-shadow, drop-shadow() tidak punya nilai spread dan tidak punya inset; halaman box-shadow membahas keduanya.
Masalah tepi yang buram
Gambar yang diburamkan memudar di tepinya, karena blur menarik piksel transparan di sekitarnya. Untuk mempertahankan tepi yang tegas (misalnya untuk background hero yang buram), taruh gambar di wadah dengan overflow: hidden dan perbesar gambarnya sedikit supaya tepi yang lembut terpotong:
.hero { overflow: hidden; }
.hero img { filter: blur(8px); transform: scale(1.1); }
Efek hover dengan filter
filter bisa diberi transition, jadi dinding logo yang berubah dari abu-abu ke berwarna atau kartu yang redup sampai di-hover cukup dibuat dengan dua aturan:
Arahkan kursor (atau tekan Tab) ke sebuah petak dan warnanya muncul perlahan.
Perlu diketahui
- Performa. Radius blur yang besar pada area yang luas paling berat, terutama
backdrop-filterpada elemen yang bergerak atau di-scroll. Uji di ponsel. - Keterbacaan. Jangan pernah memburamkan teks yang perlu dibaca orang, dan periksa kontras teks di atas panel kaca buram.
- Stacking.
filterapa pun selainnonemembuat stacking context baru dan menjadi containing block untuk turunan denganposition: fixed, sepertitransform.
Kesalahan umum
filter: blur(5). Radiusnya butuh satuan:blur(5px).- Memakai
filter: blur()untuk panel kaca buram. Teks panel itu sendiri ikut buram. Pakaibackdrop-filterdengan background yang transparan. - backdrop-filter yang tidak menampilkan apa-apa. Background elemen harus setidaknya sebagian transparan, dan harus ada sesuatu di belakangnya.
- Dua deklarasi
filter. Yang kedua menggantikan yang pertama. Taruh semua fungsi dalam satu nilai. - Bayangan berbentuk kotak pada ikon transparan. Pakai
filter: drop-shadow()alih-alihbox-shadow.
Pertanyaan yang sering diajukan
Bagaimana cara membuat elemen buram di CSS?
Pakai filter: blur(5px);. Panjangnya adalah radius blur: 0 berarti tajam dan nilai yang lebih besar makin buram. Filter ini memburamkan elemen beserta semua isinya, termasuk teks dan gambarnya.
Bagaimana cara memburamkan background di belakang elemen?
Pakai backdrop-filter: blur(10px); pada elemen, dengan background yang sebagian transparan seperti rgb(255 255 255 / 0.5). Konten elemen itu sendiri tetap tajam dan apa pun yang ada di belakangnya menjadi buram, yaitu efek kaca buram.
Apa perbedaan drop-shadow() dan box-shadow?
box-shadow selalu mengikuti kotak persegi panjang elemen. filter: drop-shadow() mengikuti bentuk yang terlihat, termasuk area transparan pada PNG atau SVG, jadi bayangan sebuah ikon punya garis bentuk ikon itu.
Bagaimana cara membuat gambar hitam putih di CSS?
Pakai filter: grayscale(100%); (atau grayscale(1)). Tambahkan transition dan filter: grayscale(0) saat hover untuk mengembalikan warnanya.
Bisakah saya memakai beberapa filter sekaligus?
Bisa, tulis berurutan dipisahkan spasi: filter: grayscale(1) brightness(1.2) blur(1px);. Filter diterapkan sesuai urutan, jadi urutannya bisa mengubah hasil. Deklarasi filter kedua menggantikan yang pertama.