Bulanıklık ve rengin bir öğenin arkasında kayması.
Saydamlık, bulanıklaştırma ve diğer efektler, arka plan içeriğinin bağlamını korurken derinlik oluşturmanın faydalı yollarıdır. Buzlu cam, video yer paylaşımları, yarı saydam gezinme başlıkları, uygun olmayan resim sansürleme, görüntü yükleme ve benzeri kullanım alanlarını desteklerler. Bu etkileri iki popüler işletim sisteminden fark etmiş olabilirsiniz: Windows 10 ve iOS.
Geçmişte, bu tekniklerin web'de uygulanması zordu ve kusursuz saldırılar veya geçici çözümler gerektiriyordu. Son yıllarda hem Safari hem de Edge bu özellikleri, filtre işlevlerine göre ön ve arka plan renklerini dinamik olarak birleştiren background-filter
(ve alternatif olarak -webkit-backdrop-filter
) özelliği aracılığıyla sunuyor. Sürüm 76'dan itibaren Chrome, background-filter
özelliğini artık destekliyor.
Tarayıcı desteği
Performansı korumak açısından, backdrop-filter
desteklenmediğinde çoklu dolgu yerine bir resmi kullanın. Aşağıdaki örnekte bu durum gösterilmektedir.
@supports (backdrop-filter: none) {
.background {
backdrop-filter: blur(10px);
}
}
@supports not (backdrop-filter: none) {
.background {
background-image: blurred-hero.png;
}
}
Temel seviye
backdrop-filter
özelliği, bir öğeye bir veya daha fazla filtre uygulayarak öğenin arkasındaki her şeyin görünümünü değiştirir.- Yer paylaşımlı öğe en azından kısmen şeffaf olmalıdır.
- Yer paylaşımlı öğe, yeni bir yığın bağlamı alır.
CSS backdrop-filter
, yarı saydam veya şeffaf bir öğeye bir veya daha fazla efekt uygular. Bunu anlamak için aşağıdaki resimleri inceleyin.
.frosty-glass-pane { backdrop-filter: blur(2px); }
.frosty-glass-pane { opacity: .9; backdrop-filter: blur(2px); }
Soldaki resimde, backdrop-filter
kullanılmazsa veya desteklenmezse çakışan öğelerin nasıl oluşturulacağı gösterilmektedir. Sağdaki resimde backdrop-filter
kullanılarak bulanıklaştırma efekti uygulanıyor. backdrop-filter
ile birlikte opacity
kullandığına dikkat edin. opacity
olmadan bulanıklaştırma uygulanabilecek bir öğe de olmayacaktır. opacity
, 1
(tamamen opak) olarak ayarlandığında arka planda herhangi bir etkisinin olmayacağını söylemeye gerek yok.
backdrop-filter
özelliği, sevdiğiniz tüm filtre işlevleri bakımından CSS filtrelerine benzer: blur()
, brightness()
, contrast()
, opacity()
, drop-shadow()
vb. none
, inherit
, initial
ve unset
anahtar kelimelerinin yanı sıra filtre olarak harici bir resim kullanmak istiyorsanız url()
işlevini de destekler. Söz dizimi, filtre ve değerlerin açıklamaları da dahil olmak üzere tüm bunların açıklamalarını MDN'de bulabilirsiniz.
backdrop-filter
, none
dışında bir değere ayarlandığında tarayıcı yeni bir yığınlama bağlamı oluşturur. Bir içeren blok da oluşturulabilir, ancak bunun için öğenin mutlak ve sabit konum alt öğeleri olması gerekir.
Zengin ve akıllıca efektler için filtreleri birleştirebilir veya daha ince ya da hassas efektler için tek bir filtre kullanabilirsiniz. Dilerseniz bunları SVG filtreleriyle birleştirebilirsiniz.
Örnekler
Daha önce işletim sistemleri için ayrılmış tasarım teknikleri ve stilleri artık tek bir CSS bildirimiyle yüksek performanslı ve ulaşılabilir. Bazı örneklere göz atalım.
Tek filtre
Aşağıdaki örnekte buzlu efekti, renk ve bulanıklığın birleştirilmesiyle elde edilir. Bulanıklaştırma, backdrop-filter
tarafından sağlanırken renk, öğenin yarı şeffaf arka plan renginden gelir.
.blur-behind-me {
background-color: rgba(255, 255, 255, 0.3);
backdrop-filter: blur(.5rem);
}
Birden çok filtre
Bazen istenen etkiyi elde etmek için birden fazla filtreye ihtiyacınız olur. Bunun için, filtrelerin boşlukla ayrılmış bir listesini sağlayın. Örneğin:
.brighten-saturate-and-blur-behind-me {
backdrop-filter: brightness(150%) saturate(150%) blur(1rem);
}
Aşağıdaki örnekte, dört bölmenin her biri farklı bir arka plan filtreleri kombinasyonuna sahiptir ve aynı şekil kümesi arkalarında animasyonludur.
Yer paylaşımları
Bu örnekte, sayfanın arka planıyla stil açısından harmanlanırken metnin okunabilir olması için yarı şeffaf bir arka planın nasıl bulanıklaştırılacağı gösterilmektedir.
.modal {
backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.5);
}
Dinamik arka planlarda metin kontrastı
Daha önce belirtildiği gibi backdrop-filter
, web'de zor veya imkansız olacak etkili efektlere izin verir. Arka planı, animasyona yanıt olarak değiştirmek buna örnek olarak gösterilebilir. Bu örnekte backdrop-filter
, metnin arkasında olup bitenlere rağmen metin ile arka planı arasındaki yüksek kontrastı koruyor. Varsayılan arka plan rengiyle (darkslategray
) başlar ve dönüşümden sonra renkleri tersine çevirmek için backdrop-filter
kullanır.
.container::before {
z-index: 1;
background-color: darkslategray;
filter: invert(1);
}
.container::after {
backdrop-filter: invert(1);
z-index: 3;
}
Sonuç
Geçtiğimiz birkaç yılda 560'tan fazla kullanıcı Chromium hatasına olumlu oy verdi ve bu hata, uzun süredir beklenen bir CSS özelliği olduğu açıkça belli oldu. Chrome'un sürüm 76'daki backdrop-filter
sürümü, web'i gerçekten OS benzeri kullanıcı arayüzü sunumuna bir adım daha yaklaştırıyor.