Saya memiliki file JPEG yang saya gunakan sebagai gambar latar belakang untuk halaman pencarian, dan saya menggunakan CSS untuk mengaturnya karena saya bekerja dalam konteks Backbone.js :
background-image: url("whatever.jpg");
Saya ingin menerapkan filter blur CSS 3 hanya untuk latar belakang, tapi saya tidak yakin bagaimana gaya hanya satu elemen itu. Jika saya mencoba:
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
tepat background-image
di bawahnya di CSS saya, itu gaya seluruh halaman, bukan hanya latar belakang. Apakah ada cara untuk memilih hanya gambar dan menerapkan filter itu? Atau, apakah ada cara untuk mematikan blur untuk setiap elemen lain di halaman?
css
background-image
css-filters
rubah
sumber
sumber
Jawaban:
Lihatlah pena ini .
Anda harus menggunakan dua wadah yang berbeda, satu untuk gambar latar belakang dan yang lainnya untuk konten Anda.
Dalam contoh, saya telah membuat dua wadah,
.background-image
dan.content
.Keduanya ditempatkan dengan
position: fixed
danleft: 0; right: 0;
. Perbedaan dalam menampilkannya berasal dariz-index
nilai - nilai yang telah ditetapkan secara berbeda untuk elemen.Permintaan maaf untuk Teks Lorem Ipsum .
Memperbarui
Terima kasih kepada Matthew Wilcoxson untuk implementasi yang lebih baik menggunakan
.content:before
http://codepen.io/akademy/pen/FlkzBsumber
pena
Menghapuskan kebutuhan akan elemen tambahan, bersama dengan membuat konten sesuai dengan alur dokumen daripada diperbaiki / absolut seperti solusi lainnya.
Dicapai menggunakan
Diperlukan auto overflow, jika tidak latar belakang akan diimbangi oleh beberapa piksel di bagian atas.
Setelah ini, Anda hanya perlu
EDIT Jika Anda tertarik untuk menghilangkan batas putih di tepinya, gunakan lebar dan tinggi
110%
dan kiri dan atas-5%
. Ini akan memperbesar sedikit latar belakang Anda - tetapi seharusnya tidak ada warna solid yang keluar dari tepinya.Pena Diperbarui di sini: https://codepen.io/anon/pen/QgyewB - Terima kasih Chad Fawcett untuk sarannya.
sumber
width
danheight
ke110%
dan kemudian menambahkan offset-5%
ketop
danleft
daricontent:before
kelas.Sebagaimana dinyatakan dalam jawaban lain ini dapat dicapai dengan:
Anda juga bisa menggunakan
backdrop-filter
Ada properti yang didukung bernama
backdrop-filter
, dan saat ini didukung di Chrome 76, Edge , Safari, dan iOS Safari (lihat caniuse.com untuk statistik).Dari Mozilla devdocs :
Lihat caniuse.com untuk statistik penggunaan.
Anda akan menggunakannya seperti ini:
Pembaruan (12/06/2019) : Chromium akan dikirimkan dengan
backdrop-filter
diaktifkan secara default di versi 76 yang akan keluar 30/07/2019 .Pembaruan (01/06/2019) : Tim Mozzilla Firefox telah mengumumkan akan segera mulai mengimplementasikannya.
Pembaruan (21/05/2019) : Chromium yang baru diumumkan
backdrop-filter
tersedia di kenari chrome tanpa mengaktifkan bendera "Aktifkan Fitur Platform Web Eksperimental". Ini berartibackdrop-filter
sangat dekat untuk diterapkan pada semua platform chrome.sumber
Anda perlu menyusun ulang HTML Anda untuk melakukan ini. Anda harus mengaburkan seluruh elemen untuk mengaburkan latar belakang. Jadi jika Anda ingin mengaburkan hanya latar belakang, itu harus menjadi elemennya sendiri.
sumber
Silakan periksa kode di bawah ini: -
sumber
Berikut ini adalah solusi sederhana untuk peramban modern dalam CSS murni dengan elemen pseudo 'sebelum', seperti solusi dari Matthew Wilcoxson.
Untuk menghindari perlunya mengakses elemen pseudo untuk mengubah gambar dan atribut lain dalam JavaScript, cukup gunakan
inherit
sebagai nilai dan akses melalui elemen induk (di sinibody
).sumber
Pada
.content
tab di CSS ubah keposition:absolute
. Jika tidak, halaman yang diberikan tidak akan dapat digulir.sumber
Meskipun semua solusi yang disebutkan sangat pintar, semua tampaknya memiliki masalah kecil atau potensi mengetuk efek dengan elemen lain di halaman ketika saya mencobanya.
Pada akhirnya untuk menghemat waktu saya hanya kembali ke solusi lama saya: Saya menggunakan Paint.NET dan pergi ke Efek, Gaussian Blur dengan radius 5 hingga 10 piksel dan hanya menyimpannya sebagai gambar halaman. :-)
HTML:
CSS:
EDIT:
Saya akhirnya berhasil, tetapi solusinya tidak mudah! Lihat disini:
sumber
Yang Anda butuhkan adalah "filter":
sumber
Tentu saja, ini bukan solusi CSS, tetapi Anda dapat menggunakan CDN Proton dengan
filter
:Itu dari https://developer.wordpress.com/docs/photon/api/#filter
sumber
localhost
saat pengujian?Saya tidak menulis ini, tapi saya perhatikan ada polyfill untuk sebagian didukung
backdrop-filter
menggunakan kompiler SASS CSS, jadi jika Anda memiliki pipa kompilasi itu dapat dicapai dengan baik (juga menggunakan TypeScript):https://codepen.io/mixal_bl4/pen/EwPMWo
sumber
sumber
Jawaban ini untuk tata letak kartu horisontal Desain Material dengan ketinggian dinamis dan gambar.
Untuk mencegah distorsi gambar karena ketinggian dinamis kartu, Anda dapat menggunakan gambar placeholder latar belakang dengan blur untuk menyesuaikan perubahan ketinggian.
Penjelasan
<div>
kelas , yang merupakan kotak centang.<a>
, kelas Link , diposisikan relatif .<div>
kelas blur dan<img>
kelas pic yang merupakan gambar yang jelas.width: 100%
, tetapi pic kelas memiliki susunan tumpukan yang lebih tinggi, yaituz-index: 2
, yang menempatkannya di atas placeholder.Kode
sumber
Sekarang ini menjadi lebih sederhana dan lebih fleksibel dengan menggunakan CSS GRID. Anda hanya perlu tumpang tindih dengan latar belakang blured (imgbg) dengan teks (h2)
dan css:
sumber
sumber
Tanpa menggunakan pseudo-class dari
sumber
Jika Anda ingin konten dapat digulir, atur posisi konten ke absolut:
Saya tidak tahu apakah ini hanya untuk saya, tetapi jika tidak, perbaiki!
Juga karena latar belakang sudah diperbaiki, itu berarti Anda memiliki efek "paralaks" ! Jadi sekarang, orang ini tidak hanya mengajarkan Anda cara membuat latar belakang buram, tetapi juga efek latar belakang paralaks!
sumber