Mai mult
Cum de a aplica o CSS filtru pentru o imagine de fundal
Am un fișier JPEG că m-am'm, folosind ca imagine de fundal pentru o pagină de căutare, și am'm folosind CSS să-l setați pentru că m-am'm de lucru în termen de Backbone.js contexte:
background-image: url("whatever.jpg");
Vreau să se aplice un CSS 3 filtru blur doar la fundal, dar am'm nu sunt sigur cum să stil doar un singur element. Dacă am încerca:
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
doar sub `background-image în CSS, stiluri întreaga pagină, mai degrabă decât doar de fundal. Există o modalitate de a selecta doar imaginea și se aplică filtrul pentru asta? Alternativ, există o modalitate de a transforma doar blur off pentru fiecare element de pe pagina?
449
15
Check out acest pen.
Va trebui să utilizați două recipiente diferite, una pentru imaginea de fundal și celălalt pentru dvs. de conținut.
În exemplu, am creat două containere,
.background-image "și".conținut
.Ambele dintre ele sunt plasate cu position: fixed " și " stânga: 0; dreapta: 0;
. Diferența în afișarea lor vine de la
z-index valorile care au fost stabilite în mod diferit pentru elementele.Ne cerem scuze pentru Lorem Ipsum Text.
Update
Datorită Matei Wilcoxson pentru o mai bună punere în aplicare folosind
.conținut:înainte de
http://codepen.io/akademy/pen/FlkzBpen
Eliminând necesitatea pentru un element suplimentar, împreună cu face conținutul se potrivi în fluxul de documente, mai degrabă decât să fie fixe/absolută ca și alte soluții.
Realizat folosind
Preaplin auto este nevoie de altceva fundal va fi compensată de câțiva pixeli în partea de sus.
După aceasta, aveți pur și simplu nevoie
EDIT Dacă sunteți interesat în eliminarea margini albe la margini, utilizați o lățime și o înălțime de 110% și la stânga și de sus de
-5%
. Acest lucru va mări medii un pic - dar nu ar trebui să fie solid de culoare sângerare din margini.Actualizat Stilou aici: https://codepen.io/anon/pen/QgyewB - Mulțumesc Chad Fawcett pentru sugestie.
După cum se menționează în alte răspunsuri, acest lucru poate fi realizat cu:
Puteți utiliza, de asemenea,
fundalul-filtru
Există o susținută proprietate numita
fundalul-filtru
, și este în prezent sprijinit în Chrome 76, C, Safari, și iOS Safari (a se vedea caniuse.com pentru statistică).De Mozilla devdocs:
A se vedea caniuse.com pentru statistici de utilizare.
V-ar folosi astfel:
Update (12/06/2019): Crom va livra cu fondul-filtru` activată în mod implicit în versiunea 76 care se datorează 30/07/2019.
Update (01/06/2019): Pe Mozzilla Firefox echipa a anuntat acesta va începe să lucreze la punerea în aplicare acest lucru în curând.
Update (21/05/2019): Crom tocmai a anuntat `fundalul-filtru este disponibil în google chrome canary, fără a permite "Permite Experimentale Platforma Web Caracteristici" pavilion. Asta înseamnă, fundal-filtrul este foarte aproape de a fi implementat pe toate platforme chrome.
Ai nevoie de a re-structura HTML, în scopul de a face acest lucru. Aveți pentru a estompa întregul element în scopul de a estompa fundalul. Deci, dacă doriți pentru a estompa doar fundal, acesta trebuie să fie propriul său element.
Vă rugăm să verificați codul de mai jos:-
Următoarele este o soluție simplă pentru browserele moderne în CSS pur, cu o 'înainte' pseudo element, ca soluția la Matei Wilcoxson.
Pentru a evita necesitatea de a accesa pseudo-element pentru a schimba imaginea și alte atribute în JavaScript, pur și simplu utilizați
moșteni
ca valoare și să le accesați prin intermediul elementul părinte (aici "corp").În
.conținut în fila CSS schimba-l la
position:absolute`. În caz contrar, pagina prestate câștigat't fi derulant.Deși toate soluțiile menționate sunt foarte inteligent, toate păreau să aibă probleme sau potențiale, efectele cu alte elemente de pe pagina, atunci când le-am încercat.
În final, pentru a economisi timp eu pur și simplu am întors la vechiul meu soluție: am folosit [Paint.NET][1] și s-a dus la Efecte, Blur Gaussian, cu o rază de 5 până la 10 pixeli și salvat ca pagină de imagine. :-)
HTML:
Toate ai de fapt nevoie este "filtru":
Desigur, acest lucru nu este un CSS-soluție, dar puteți folosi CDN Proton cu "filtru":
Este de la https://developer.wordpress.com/docs/photon/api/#filter
Acum, aceasta a devenit mai simplu și mai flexibil prin utilizarea CSS GRID.Trebuie doar să se suprapună blured fundal(imgbg) cu textul(h2)
și css:
Acest raspuns este pentru un Material Design orizontală aspect de carte cu înălțimea dinamică și o imagine.
Pentru a preveni denaturarea imaginii datorită dinamic înălțime de card, ai putea folosi un fundal, imagine substituent cu blur pentru a ajusta pentru schimbări în înălțime.
Explicație
<a>
, clasa link, este situat relative.<div>
clasa blur și<img>
clasa foto care este imaginea clară.width: 100%, dar clasa **foto** are o mai mare stivă în ordine, de exemplu,
z-index: 2`, ceea ce o plasează deasupra substituent.Cod
Am't scrie acest lucru, dar am observat un polyfill pentru suportate parțial
fundalul-filtru
folosind CSS, SASS compilator, deci, dacă aveți o compilație de conducte poate fi realizat foarte bine (se folosește, de asemenea, mașina de Scris):https://codepen.io/mixal_bl4/pen/EwPMWo
Dacă vrei să-conținut să fie verticală, setați poziția de conținutul absolute:
Eu nu't știu dacă acest lucru a fost doar pentru mine, dar, dacă nu's fix!
De asemenea din fundal este fix, înseamnă că ai o "de paralaxă" efect! Deci, acum, nu numai că această persoană învăța cum să facă un fond neclare, dar este, de asemenea, un parallax efect de fundal!