Saya mengalami masalah dalam menerapkan efek blur pada div overlay semi transparan. Saya ingin semua yang ada di belakang div dikaburkan, seperti ini:
Ini adalah jsfiddle yang tidak berfungsi: http://jsfiddle.net/u2y2091z/
Ada ide bagaimana membuat ini bekerja? Saya ingin membuat ini sesederhana mungkin dan menjadikannya lintas-browser. Inilah CSS yang saya gunakan:
#overlay {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background:black;
background:rgba(0,0,0,0.8);
filter:blur(4px);
-o-filter:blur(4px);
-ms-filter:blur(4px);
-moz-filter:blur(4px);
-webkit-filter:blur(4px);
}
html
css
blur
css-filters
Chad Johnson
sumber
sumber
CSS filter
tidak didukung di Firefox, Anda tidak boleh menggunakannya.Jawaban:
Berikut ini contoh yang menggunakan
svg
filter.Idenya adalah menggunakan
svg
elemen yangheight
sama dengan#overlay
dan menerapkanfeGaussianblur
filter di atasnya. Filter ini diterapkan pada sebuahsvg
image
elemen. Untuk memberikan efek ekstrusi, Anda dapat menggunakan abox-shadow
di bagian bawah overlay.Dukungan Browser untuk
svg
filter .Demo on Codepen
sumber
Untuk jawaban yang lebih sederhana dan terkini:
Perhatikan bahwa dukungan browser tidak sempurna, tetapi dalam banyak kasus, keburaman tidak penting.
sumber
Saya dapat mengumpulkan informasi dari semua orang di sini dan selanjutnya Googling, dan saya menemukan yang berikut ini yang berfungsi di Chrome dan Firefox: http://jsfiddle.net/xtbmpcsu/ . Saya masih berusaha membuat ini berfungsi untuk IE dan Opera.
Kuncinya adalah meletakkan konten di dalam div tempat filter diterapkan:
Dan kemudian CSS:
Jadi masker telah menerapkan filter. Juga, perhatikan penggunaan url () untuk filter dengan
<svg>
tag untuk nilai - ide tersebut berasal dari http://codepen.io/AmeliaBR/pen/xGuBr . Jika Anda kebetulan mengecilkan CSS Anda, Anda mungkin perlu mengganti spasi apa pun di markup filter SVG dengan "% 20".Jadi sekarang, semua yang ada di dalam div mask sudah kabur.
sumber
filter: url(...
. Hapus itu dan Chrome berhasil menggunakanfilter: blur(10px);
.Jika Anda mencari pendekatan lintas-browser yang andal saat ini , Anda tidak akan menemukan pendekatan yang hebat. Pilihan terbaik yang Anda miliki adalah membuat dua gambar (ini dapat diotomatiskan di beberapa lingkungan), dan mengaturnya sedemikian rupa sehingga satu melapisi yang lain. Saya telah membuat contoh sederhana di bawah ini:
Meskipun efektif, pendekatan ini pun belum tentu ideal. Itu dikatakan, itu menghasilkan hasil yang diinginkan .
sumber
Inilah solusi yang mungkin.
HTML
CSS
Saya tahu CSS dapat disederhanakan dan Anda mungkin harus membuang id. Idenya di sini adalah menggunakan div sebagai wadah pemangkasan dan kemudian menerapkan blur pada duplikat gambar. Biola
Untuk membuat ini berfungsi di Firefox, Anda harus menggunakan peretasan SVG .
sumber
-webkit-
karena tidak diterapkan di browser tersebut. Lebih baik meletakkan deklarasi standar di akhir - setelah semua versi yang diawali.Alih-alih menambahkan latar belakang buram lain ke konten Anda, Anda dapat menggunakan filter latar belakang . FYI IE 11 dan Firefox mungkin tidak mendukungnya. Periksa caniuse .
Demo:
sumber
sumber
Saya datang dengan solusi ini.
Klik untuk melihat gambar efek buram
Ini adalah semacam trik yang menggunakan anak yang diposisikan secara absolut
div
, menyetel gambar latar belakangnya sama dengan induknyadiv
, lalu menggunakanbackground-attachment:fixed
properti CSS bersama-sama denganbackground
properti yang sama yang disetel pada elemen induk.Kemudian Anda menerapkan
filter:blur(10px)
(atau nilai apa pun) pada div anak.lihat di codepen
sumber
Berikut adalah solusi yang berfungsi dengan latar belakang tetap, jika Anda memiliki latar belakang tetap dan Anda memiliki beberapa elemen overlay dan Anda memerlukan latar belakang buram untuk mereka, solusi ini berfungsi:
Gambar kami memiliki HTML sederhana ini:
Latar belakang tetap untuk
<body>
atau elemen pembungkus:Dan di sini misalnya kami memiliki elemen overlay dengan latar belakang transparan putih:
Sekarang kita perlu menggunakan gambar latar belakang yang sama persis dengan pembungkus kita untuk elemen overlay kita juga, saya menggunakannya sebagai
:before
psuedo-class:Karena latar belakang tetap bekerja dengan cara yang sama pada elemen pembungkus dan lapisan, kami memiliki latar belakang dalam posisi gulir yang persis sama dari elemen yang dihamparkan dan kami dapat memburamkannya. Ini biola yang berfungsi, diuji di Firefox, Chrome, Opera dan Edge: https://jsfiddle.net/0vL2rc4d/
CATATAN: Di firefox ada bug yang membuat layar berkedip saat menggulir dan ada latar belakang buram yang diperbaiki. jika ada perbaikan, beri tahu saya
sumber
Ini akan melakukan overlay blur pada konten:
sumber