CSS后台过滤器在其后面的内容移动时不会更新

问题描述 投票:2回答:1

我应该认为,随着backdropped元素背后的内容移动,元素的背景颜色适应看起来好像内容通过它闪耀。在这个例子中,情况并非如此:

enter image description here

怎么了?在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>
css safari css-filters
1个回答
0
投票

在我将屏幕缩小并滚动页面后,我注意到它为我刷新了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-changedocs),因为Safari支持。不确定过滤器是否是有效的更改对象,但我相信可以使用'scroll-position'。我应该注意到这是一个核选项所以要小心。

© www.soinside.com 2019 - 2024. All rights reserved.