Shadows & Filters — CSS

Coba liat aplikasi Material Design (Gmail, Maps) — kartu/tombol punya bayangan halus di bawahnya, kerasanya kayak nempel di kertas yang ada elevasi. Itu trick…

Bayangan bikin elemen kelihatan sedikit terangkat dari halaman, jadi mata langsung tahu mana yang ada di atas. CSS punya box-shadow buat bayangan kotak elemen, text-shadow buat bayangan huruf, dan filter buat efek kayak buram atau hitam putih, mirip filter foto di HP.

🧪 Tebakan cepat: di box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.2), angka mana yang bikin pinggiran bayangannya lembut? Tebak dulu, jawabannya ada di bagian "Bayangan kotak dengan box-shadow".

Bayangan kotak dengan box-shadow

.kartu {
  box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.2);
}

Nilainya dibaca dari kiri ke kanan, dipisah spasi:

Hasilnya, bayangan abu-abu tipis jatuh sedikit ke kanan bawah kartu, dengan pinggiran yang lembut. Kartunya kelihatan kayak melayang di atas halaman. Jawaban tebakan: angka ketiga, 8px.

Boleh ada angka keempat sebelum warna, namanya spread: 2px 4px 8px 2px bikin bayangannya 2px lebih lebar ke semua sisi. Tambah kata inset di depan, misalnya box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2), dan bayangannya pindah ke sisi dalam elemen, kayak cekungan. Cocok buat kotak input yang kelihatan tertekan. Bayangan, di luar maupun di dalam, selalu mengikuti sudut border-radius.

Bayangan huruf dengan text-shadow

h1 {
  text-shadow: 2px 2px 4px gray;
}

Urutannya sama: offset-x, offset-y, blur, lalu warna. Bedanya, bayangan ini mengikuti bentuk tiap huruf, bukan kotak elemennya. Hasilnya, tiap huruf judul punya bayangan abu-abu tipis di kanan bawahnya.

Efek visual dengan filter

img {
  filter: blur(3px);
}

filter mengubah tampilan elemen kayak filter foto, tanpa mengubah file aslinya. Beberapa yang sering dipakai:

Beberapa filter bisa digabung, dipisah spasi: filter: grayscale(100%) blur(2px);.

⚠️ Jebakan yang sering ketemu

TL;DR: box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.2) artinya geser kanan 2px, geser bawah 4px, buram 8px, lalu warna. Angka keempat (spread) opsional, dan inset memindahkan bayangan ke dalam. text-shadow memakai urutan yang sama buat huruf. filter memberi efek kayak blur(), grayscale(), brightness(), dan drop-shadow().

Yang akan kamu pelajari