Menu

Blur dan Filter CSS: blur(), grayscale, brightness

filter: blur(5px) membuat elemen buram, dan backdrop-filter: blur() membuat buram apa yang ada di belakangnya. Pelajari setiap fungsi filter (brightness, contrast, grayscale, sepia, saturate, hue-rotate, invert, drop-shadow) dengan slider langsung, cara menggabungkannya, dan masalah tepi blur.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

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

FungsiNilai netralFungsinyaContoh
blur(r)0Gaussian blur dengan radius rblur(4px)
brightness(n)1lebih gelap di bawah 1, lebih terang di atasnyabrightness(0.7)
contrast(n)1lebih datar di bawah 1, lebih tegas di atasnyacontrast(1.3)
grayscale(n)01 (atau 100%) berarti abu-abu sepenuhnyagrayscale(100%)
sepia(n)0nada cokelat yang hangatsepia(0.6)
saturate(n)10 berarti abu-abu, di atas 1 lebih pekatsaturate(1.5)
hue-rotate(a)0degmenggeser setiap hue di sepanjang roda warnahue-rotate(90deg)
invert(n)01 berarti negatif warna penuhinvert(1)
opacity(n)1seperti properti opacityopacity(0.5)
drop-shadow(x y blur color)bayangan yang mengikuti bentukdrop-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-filter pada 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. filter apa pun selain none membuat stacking context baru dan menjadi containing block untuk turunan dengan position: fixed, seperti transform.

Kesalahan umum

  • filter: blur(5). Radiusnya butuh satuan: blur(5px).
  • Memakai filter: blur() untuk panel kaca buram. Teks panel itu sendiri ikut buram. Pakai backdrop-filter dengan 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-alih box-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.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai