Esta é uma solução que funciona com fundos fixos. Se você tiver um fundo fixo e alguns elementos sobrepostos e precisar de fundos borrados para eles, esta solução funciona:
Imagem temos este HTML simples:
<body> <!-- or any wrapper -->
<div class="content">Some Texts</div>
</body>
Um plano de fundo fixo para <body>
ou o elemento wrapper:
body {
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
E aqui, por exemplo, temos um elemento sobreposto com um fundo branco transparente:
.content {
background-color: rgba(255, 255, 255, 0.3);
position: relative;
}
Agora precisamos usar exatamente a mesma imagem de fundo de nosso wrapper para nossos elementos de sobreposição também, eu a uso como uma :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;
}
Como o plano de fundo fixo funciona da mesma maneira nos elementos wrapper e sobrepostos, temos o plano de fundo exatamente na mesma posição de rolagem do elemento sobreposto e podemos simplesmente desfocá-lo. Aqui está um violino que funciona, testado no Firefox, Chrome, Opera e Edge: https://jsfiddle.net/0vL2rc4d/
NOTA: No firefox há um bug que faz a tela piscar ao rolar e há fundos borrados corrigidos. se houver alguma correção, me avise
CSS filter
não é compatível com Firefox, você não deveria usá-lo.