Filter

Podcast CSS - 023: Filter

Katakanlah Anda perlu membangun elemen yang sedikit buram, efek kaca buram yang berada di atas gambar. Teks harus berupa teks langsung, bukan gambar. Bagaimana Anda melakukannya?

Kombinasi filter CSS dan backdrop-filter memungkinkan kita menerapkan efek dan mengaburkan apa yang dibutuhkan secara real time. Blur dan opasitas adalah dua dari sekian banyak filter yang tersedia, jadi mari kita lihat sekilas apa yang mereka semua lakukan dan cara menggunakannya.

Properti filter

Dukungan Browser

  • Chrome: 53.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 9.1.

Sumber

Anda dapat menerapkan satu atau beberapa filter berikut sebagai nilai untuk filter Jika Anda salah menerapkan filter, filter lainnya yang ditentukan untuk filter tidak akan berfungsi.

blur

Ini akan menerapkan blur gaussian dan satu-satunya argumen yang dapat Anda teruskan adalah radius, yang merupakan berapa tingkat blur yang diterapkan. Ini harus berupa satuan panjang, seperti 10px. Persentase tidak diterima.

.my-element {
    filter: blur(0.2em);
}

brightness

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Untuk menambah atau mengurangi kecerahan elemen, menggunakan fungsi kecerahan. Nilai kecerahan dinyatakan sebagai persentase dengan gambar yang tidak berubah dinyatakan sebagai nilai 100%. Nilai 0% akan mengubah gambar menjadi hitam seluruhnya, oleh karena itu, nilai antara 0% dan 100% membuat gambar kurang terang. Gunakan nilai di atas 100% untuk meningkatkan kecerahan.

.my-element {
    filter: brightness(80%);
}

contrast

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Tetapkan nilai antara 0% dan 100% untuk mengurangi atau meningkatkan kontras.

.my-element {
    filter: contrast(160%);
}

grayscale

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Anda dapat menerapkan efek hitam putih sepenuhnya menggunakan 1 sebagai nilai untuk grayscale(), atau 0 untuk memiliki elemen saturasi penuh. Anda juga dapat menggunakan nilai persentase atau desimal untuk hanya menerapkan efek hitam putih sebagian. Jika Anda tidak meneruskan argumen, elemen akan benar-benar berwarna abu-abu. Jika Anda meneruskan nilai yang lebih besar dari 100%, nilai tersebut akan dibatasi hingga 100%.

.my-element {
    filter: grayscale(80%);
}

invert

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Sama seperti grayscale, Anda dapat meneruskan 1 atau 0 ke fungsi invert() untuk mengaktifkan atau menonaktifkannya. Saat aktif, warna elemen akan sepenuhnya dibalik. Anda juga dapat menggunakan nilai persentase atau desimal untuk hanya menerapkan inversi warna sebagian. Jika Anda tidak meneruskan argumen apa pun ke dalam fungsi invert(), elemen akan benar-benar dibalik.

.my-element {
    filter: invert(1);
}

opacity

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Filter opacity() berfungsi seperti properti opacity, tempat Anda bisa meneruskan angka atau persentase untuk menambah atau mengurangi opasitas. Jika Anda tidak meneruskan argumen, elemen akan terlihat sepenuhnya.

.my-element {
    filter: opacity(0.3);
}

saturate

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Filter saturate sangat mirip dengan filter brightness dan menerima argumen yang sama: angka atau persentase. Alih-alih menambah atau mengurangi efek kecerahan, saturate meningkatkan atau mengurangi saturasi warna.

.my-element {
    filter: saturate(155%);
}

sepia

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Anda dapat menambahkan efek rona warna cokelat keabu-abuan dengan filter ini yang berfungsi seperti grayscale(). Warna sepia adalah teknik cetak fotografi yang mengubah rona hitam menjadi coklat untuk menghangatkan warna tersebut. Anda dapat meneruskan angka atau persentase sebagai argumen untuk sepia() yang meningkatkan atau mengurangi efeknya. Meneruskan argumen tidak akan menambahkan efek sepia penuh (setara dengan sepia(100%)).

.my-element {
    filter: sepia(70%);
}

hue-rotate

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Anda telah mempelajari bagaimana hue di hsl merujuk pada rotasi roda warna di pelajaran warna dan filter ini berfungsi dengan cara yang sama. Jika Anda melewati suatu sudut, seperti derajat atau belokan, menggeser hue dari semua warna elemen, mengubah bagian {i>color wheel<i} yang dirujuknya. Jika Anda meneruskan argumen, tidak akan melakukan apa pun.

.my-element {
    filter: hue-rotate(120deg);
}

drop-shadow

Dukungan Browser

  • Chrome: 18.
  • Edge: 12.
  • Firefox: 35.
  • Safari: 6.

Sumber

Anda dapat menerapkan {i>drop shadow<i} kurva {i>drop shadow<i} seperti yang Anda lakukan pada {i>tool<i} desain, seperti Photoshop dengan drop-shadow Bayangan ini diterapkan ke mask alfa yang membuatnya sangat berguna untuk menambahkan bayangan ke gambar potongan. Filter drop-shadow mengambil parameter bayangan yang berisi nilai offset-x, offset-y, blur, dan warna yang dipisahkan spasi. Hampir sama dengan box-shadow, tetapi kata kunci inset dan nilai sebar tidak didukung.

.my-element {
    filter: drop-shadow(5px 5px 10px orange);
}

Pelajari lebih lanjut berbagai jenis bayangan dalam modul shadows.

url

Dukungan Browser

  • Chrome: 5.
  • Edge: 12.
  • Firefox: 3.
  • Safari: 6.

Sumber

Filter url memungkinkan Anda menerapkan filter SVG dari elemen atau file SVG yang ditautkan. Anda dapat baca selengkapnya tentang filter SVG di sini

Filter tampilan latar

Dukungan Browser

  • Chrome: 76.
  • Edge: 79.
  • Firefox: 103.
  • Safari: 18.

Sumber

Filter drop-down menerima semua nilai fungsi filter yang sama seperti filter. Perbedaan antara backdrop-filter dan filter adalah bahwa properti backdrop-filter hanya menerapkan filter ke latar belakang, dengan properti filter menerapkannya ke seluruh elemen.

Contoh yang tepat di awal pelajaran ini adalah contoh yang tepat, karena Anda tidak ingin teks menjadi buram dan idealnya Anda tidak ingin menambahkan elemen HTML tambahan. Kemampuan menerapkan filter hanya ke tampilan latar memungkinkan hal tersebut.

Menguji pemahaman Anda

Uji pengetahuan Anda tentang filter

Manakah dari berikut ini yang merupakan fungsi filter CSS?

grayscale()
🎉
invert()
🎉
flip()
Coba lagi.
multiply()
Coba lagi.
blur()
🎉
brightness()
🎉

Bisakah CSS menggunakan filter SVG?

Ya
Fungsi filter url() memungkinkan hal ini
Tidak
Coba lagi.