这是一个适用于固定背景的解决方案,如果您有一个固定的背景,并且有一些叠加元素需要模糊背景,那么这个解决方案可以使用:
假设我们有以下简单的HTML:
<body> <!-- or any wrapper -->
<div class="content">Some Texts</div>
</body>
固定的背景可以应用在 <body>
或包含元素上:
body {
background-image: url(http://placeimg.com/640/360/any);
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
这里举个例子,我们有一个带有白色透明背景的叠加元素:
.content {
background-color: rgba(255, 255, 255, 0.3);
position: relative;
}
现在我们需要将外层包装器的完全相同的背景图像用于我们的叠加元素,我使用它作为一个
:before
伪类:
.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;
}
自从固定背景在包装器和叠加元素中以相同的方式工作,我们可以将背景置于叠加元素的完全相同的滚动位置,并简单地模糊它。
这是一个有效的fiddle,在Firefox、Chrome、Opera和Edge中进行了测试:
https://jsfiddle.net/0vL2rc4d/。
注意:在Firefox中,存在一个
错误,使得在滚动和有固定模糊背景的情况下屏幕会闪烁。如果有任何修复方法,请告诉我。