Bir elementi bulanıklaştır
filter: blur() bir uzunluk, yani bulanıklık yarıçapını alır. Ne kadar büyükse element o kadar bulanık olur:
filter yalnızca resimlerde değil her elementte çalışır: bulanıklaştırılmış bir div metnini, kenarlığını ve çocuklarını da bulanıklaştırır. Bulanıklaştırılmış resimlerdeki yumuşak kenarlara dikkat et: bulanıklık resmi dışarı doğru yayar ve çevresindeki saydam alanı karıştırır. Çözüm aşağıda, "Bulanık kenar sorunu" başlığı altında.
Arka planı bulanıklaştır: backdrop-filter
Bir elementin arkasındakini (bir fotoğrafın ya da sayfanın üzerindeki buzlu cam panel) bulanıklaştırmak için backdrop-filter kullan. Elementin kendi içeriği net kalır. Bulanıklığın görünmesi için yarı saydam bir arka plan gerekir:
Çizgiler ve daireler panelin çevresinde net, arkasında bulanık; panelin metnine ise dokunulmamış. Metni okunaklı tut: arka plan rengindeki daha açık ya da daha koyu bir ton kalabalık resimlerde yardımcı olur.
Bütün filter fonksiyonları, canlı
Herhangi bir kaydırıcıyı hareket ettir. Resmin altındaki satır, kopyalamaya hazır tam filter değeridir:
Yalnızca nötr değerinden uzaklaştırdığın fonksiyonlar yazılır; bu, değeri kısa tutar. brightness(1) ya da blur(0px) hiçbir şey değiştirmez, bu yüzden onları listelemenin bir nedeni yoktur.
Filter fonksiyonları
| Fonksiyon | Nötr değer | Ne yapar | Örnek |
|---|---|---|---|
blur(r) | 0 | r yarıçaplı Gauss bulanıklığı | blur(4px) |
brightness(n) | 1 | 1'in altında daha koyu, üstünde daha parlak | brightness(0.7) |
contrast(n) | 1 | 1'in altında daha düz, üstünde daha keskin | contrast(1.3) |
grayscale(n) | 0 | 1 (ya da 100%) tamamen gri | grayscale(100%) |
sepia(n) | 0 | sıcak kahverengi ton | sepia(0.6) |
saturate(n) | 1 | 0 gri, 1'in üstü daha canlı | saturate(1.5) |
hue-rotate(a) | 0deg | her tonu renk çarkında kaydırır | hue-rotate(90deg) |
invert(n) | 0 | 1 tam bir renk negatifi | invert(1) |
opacity(n) | 1 | opacity özelliği gibi | opacity(0.5) |
drop-shadow(x y blur color) | şekli takip eden bir gölge | drop-shadow(2px 4px 6px rgb(0 0 0 / 0.3)) |
Sayılar yüzde de olabilir (grayscale(100%), grayscale(1)'e eşittir). Birkaç fonksiyon boşlukla ayrılarak tek bir değere girer ve sırayla uygulanır: filter: grayscale(1) sepia(1) kahverengi bir ton verir, sepia(1) grayscale(1) ise düz gri olur.
drop-shadow şekli takip eder
box-shadow her zaman bir dikdörtgendir (en fazla yuvarlak köşeli). drop-shadow() ise görünür piksellerden çizilir, bu yüzden saydam bir ikon, ikonun ana hatlarına sahip bir gölge alır:
İlk yıldız görünmez sınırlayıcı kutusundan kare bir gölge düşürüyor. İkincisi yıldız şeklinde bir gölge düşürüyor. box-shadow'dan farklı olarak drop-shadow()'un spread değeri ve inset'i yoktur; bunları box-shadow sayfası anlatıyor.
Bulanık kenar sorunu
Bulanıklaştırılmış bir resim kenarlarında solar, çünkü bulanıklık çevresindeki saydam pikselleri içeri çeker. Keskin bir kenar tutmak için (örneğin bulanık bir hero arka planı için) resmi overflow: hidden olan bir kapsayıcıya koy ve yumuşak kenar kesilsin diye resmi biraz büyüt:
.hero { overflow: hidden; }
.hero img { filter: blur(8px); transform: scale(1.1); }
filter ile hover efektleri
filter'a transition verilebilir, bu yüzden griden renge geçen bir logo duvarı ya da hover'a kadar soluk duran bir kart iki kuraldır:
Bir karonun üzerine gel (ya da Tab ile ona git), rengi belirir.
Bilmekte fayda var
- Performans. Büyük alanlardaki büyük bulanıklık yarıçapları, özellikle hareket eden ya da kayan elementlerdeki
backdrop-filter, en pahalı olanlardır. Bir telefonda test et. - Okunabilirlik. İnsanların okuması gereken metni asla bulanıklaştırma ve buzlu bir panelin üzerindeki metnin kontrastını kontrol et.
- İstifleme.
nonedışındaki herfilter, tıpkıtransformgibi yeni bir stacking context oluşturur veposition: fixedtorunları için kapsayıcı blok olur.
Sık yapılan hatalar
filter: blur(5). Yarıçapın birimi olmalıdır:blur(5px).- Buzlu bir panel için
filter: blur()kullanmak. Panelin kendi metnini bulanıklaştırır. Saydam bir arka planlabackdrop-filterkullan. - Hiçbir şey göstermeyen bir backdrop-filter. Elementin arka planı en azından kısmen saydam olmalı ve arkasında bir şey bulunmalıdır.
- İki
filterbildirimi. İkincisi ilkinin yerini alır. Bütün fonksiyonları tek bir değere koy. - Saydam ikonlarda kutu şeklinde gölgeler.
box-shadowyerinefilter: drop-shadow()kullan.
Sıkça Sorulan Sorular
CSS'te bir element nasıl bulanıklaştırılır?
filter: blur(5px); kullan. Uzunluk bulanıklık yarıçapıdır: 0 nettir ve daha büyük değerler daha bulanıktır. Elementi ve metni ile resimleri dahil içindeki her şeyi bulanıklaştırır.
Bir elementin arkasındaki arka plan nasıl bulanıklaştırılır?
Elemente rgb(255 255 255 / 0.5) gibi kısmen saydam bir arka planla birlikte backdrop-filter: blur(10px); ver. Elementin kendi içeriği net kalır, arkasındaki her şey bulanıklaşır: buzlu cam efekti.
drop-shadow() ile box-shadow arasındaki fark nedir?
box-shadow her zaman elementin dikdörtgen kutusunu takip eder. filter: drop-shadow() ise bir PNG'nin ya da SVG'nin saydam alanları dahil görünür şekli takip eder, bu yüzden bir ikonun gölgesi ikonun ana hatlarına sahip olur.
CSS'te bir resim siyah beyaz nasıl yapılır?
filter: grayscale(100%); (ya da grayscale(1)) kullan. Rengi geri getirmek için bir transition ve hover'da filter: grayscale(0) ekle.
Aynı anda birkaç filter kullanabilir miyim?
Evet, onları boşlukla ayırarak listele: filter: grayscale(1) brightness(1.2) blur(1px);. Sırayla uygulanırlar, bu yüzden sıra sonucu değiştirebilir. İkinci bir filter bildirimi ilkinin yerini alır.