Voici une solution qui fonctionne avec des arrière-plans fixes, si vous avez un arrière-plan fixe et que vous avez des éléments superposés et que vous avez besoin d'arrière-plans estompés pour eux, cette solution fonctionne:
Image, nous avons ce HTML simple:
<body> <!-- or any wrapper -->
<div class="content">Some Texts</div>
</body>
Un arrière-plan fixe pour <body>
ou l'élément wrapper:
body {
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
Et ici par exemple, nous avons un élément superposé avec un fond transparent blanc:
.content {
background-color: rgba(255, 255, 255, 0.3);
position: relative;
}
Maintenant, nous devons utiliser exactement la même image d'arrière-plan de notre wrapper pour nos éléments de superposition, je l'utilise comme une :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;
}
Étant donné que l'arrière-plan fixe fonctionne de la même manière dans les éléments wrapper et superposés, nous avons l'arrière-plan exactement dans la même position de défilement que l'élément superposé et nous pouvons simplement le rendre flou. Voici un violon fonctionnel, testé dans Firefox, Chrome, Opera et Edge: https://jsfiddle.net/0vL2rc4d/
REMARQUE: dans Firefox, il existe un bogue qui fait scintiller l'écran lors du défilement et des arrière-plans flous sont fixes. s'il y a une solution, faites le moi savoir
CSS filter
n'est pas pris en charge sur Firefox, vous ne devriez pas l'utiliser.