Menu

CSS Bulanıklaştırma ve Filter: blur(), grayscale, brightness

filter: blur(5px) bir elementi bulanıklaştırır, backdrop-filter: blur() ise arkasındakini. Bütün filter fonksiyonlarını (brightness, contrast, grayscale, sepia, saturate, hue-rotate, invert, drop-shadow) canlı kaydırıcılarla, onları nasıl birleştireceğini ve bulanık kenar sorununu öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

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ı

FonksiyonNötr değerNe yaparÖrnek
blur(r)0r yarıçaplı Gauss bulanıklığıblur(4px)
brightness(n)11'in altında daha koyu, üstünde daha parlakbrightness(0.7)
contrast(n)11'in altında daha düz, üstünde daha keskincontrast(1.3)
grayscale(n)01 (ya da 100%) tamamen grigrayscale(100%)
sepia(n)0sıcak kahverengi tonsepia(0.6)
saturate(n)10 gri, 1'in üstü daha canlısaturate(1.5)
hue-rotate(a)0degher tonu renk çarkında kaydırırhue-rotate(90deg)
invert(n)01 tam bir renk negatifiinvert(1)
opacity(n)1opacity özelliği gibiopacity(0.5)
drop-shadow(x y blur color)şekli takip eden bir gölgedrop-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. none dışındaki her filter, tıpkı transform gibi yeni bir stacking context oluşturur ve position: fixed torunları 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 planla backdrop-filter kullan.
  • 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 filter bildirimi. İkincisi ilkinin yerini alır. Bütün fonksiyonları tek bir değere koy.
  • Saydam ikonlarda kutu şeklinde gölgeler. box-shadow yerine filter: 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.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA