我应该认为,随着backdropped
元素背后的内容移动,元素的背景颜色适应看起来好像内容通过它闪耀。在这个例子中,情况并非如此:
怎么了?在Safari 12.0.3,macOS Mojave 10.14.3上测试过。
.container {
width: 100%;
height: 150px;
overflow-y: scroll;
}
.block {
height: 50px;
margin: 10px;
}
.block:nth-child(1) {
margin-top: 30px;
background-color: red;
}
.block:nth-child(2) {
background-color: green;
}
.block:nth-child(3) {
background-color: blue;
}
.glass {
position: absolute;
background-color: rgba(255, 255, 255, 0.3);
top: 0;
width: 25%;
border: 1px solid black;
height: 100%;
}
.clear {
left: 55%;
}
.frosted {
left: 20%;
background-color: rgba(255, 255, 255, 0.5);
-webkit-backdrop-filter: blur(20px);
backdrop-filter: blur(20px);
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
<div id="app">
<div class="container">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="glass clear"></div>
<div class="glass frosted"></div>
</div>
</div>
在我将屏幕缩小并滚动页面后,我注意到它为我刷新了DID。但滚动示例时没有更新(无论屏幕大小如何)
因此看起来油漆导致问题而不是实施。这也让我想知道设备功能是否可能部分出错。我使用的是13英寸2017 MBP,因此没有独立的GPU。
您是否尝试过强制GPU加速?为此,请将此添加到元素:
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
Safari仍然似乎与translateZ(0)
有关,所以使用上面的代替。
编辑:以上似乎没有解决问题。考虑添加will-change
(docs),因为Safari支持。不确定过滤器是否是有效的更改对象,但我相信可以使用'scroll-position'。我应该注意到这是一个核选项所以要小心。