Ecco una soluzione che funziona con sfondi fissi, se hai uno sfondo fisso e hai alcuni elementi sovrapposti e hai bisogno di sfondi sfocati per loro, questa soluzione funziona:
Immagine abbiamo questo semplice HTML:
<body> <!-- or any wrapper -->
<div class="content">Some Texts</div>
</body>
Uno sfondo fisso per <body>
o l'elemento wrapper:
body {
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
E qui ad esempio abbiamo un elemento sovrapposto con uno sfondo bianco trasparente:
.content {
background-color: rgba(255, 255, 255, 0.3);
position: relative;
}
Ora dobbiamo usare la stessa identica immagine di sfondo del nostro wrapper anche per i nostri elementi di sovrapposizione, la uso come :before
classe psuedo:
.content:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
filter: blur(5px);
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
Poiché lo sfondo fisso funziona allo stesso modo sia negli elementi wrapper che in quelli sovrapposti, abbiamo lo sfondo esattamente nella stessa posizione di scorrimento dell'elemento sovrapposto e possiamo semplicemente sfocarlo. Ecco un violino funzionante, testato su Firefox, Chrome, Opera ed Edge: https://jsfiddle.net/0vL2rc4d/
NOTA: In Firefox c'è un bug che fa tremolare lo schermo durante lo scorrimento e ci sono sfondi sfocati fissi. se c'è qualche soluzione, fammi sapere
CSS filter
non è supportato su Firefox, non dovresti usarlo.