html - 背景过滤器不适用于 Chrome 中的嵌套元素

标签 html css css-filters

我有一个 div.outer并在 div.inner 内, 都与 position: absolute;backdrop-filter: blur(8px); .

https://jsbin.com/nihakiqocu/1/edit?html,css,output

Safari(左)给出了想要的结果——两个 div 都模糊了它们背后的东西。

然而,Chrome(右)仅应用 div.outer 的模糊效果。 :

Safari Chrome

我有一个解决方案:在 div.outer 中添加另一个 div和移动 backdrop-filter: blur(8px);到那个新的div。

但是,我希望有一个不需要从第一个 jsbin 更改 DOM 的解决方案。另外,有没有人知道是什么原因造成的——这是一个 Chrome 错误吗?

https://jsbin.com/rasudijame/1/edit?html,css,output

PS:它适用于 iOS 的 Chrome,但不适用于 Android 的 Chrome,也不适用于 Mac OS 的 Chrome

最佳答案

将背景过滤器放在 css 伪元素上。这允许嵌套背景过滤器。您也可以使用 z-index: -1;将背景放置在元素后面

div {
  height: 100px;
  width: 100px;
}
.wrapper {
  position: absolute;
}
.outer, .inner {
  position: relative;
}
.outer::before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.outer {
  background: rgba(255, 0, 0, .5);
}
.inner::before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  
}
.inner {
  background: rgba(0, 0, 255, .5);
  top: 50px;
  left: 50px;
}
main {
  position: relative;
}
<main>
  <div class="wrapper">
    <div class="outer">
      <div class="inner"></div>
    </div>
  </div>

  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus in id quos, est voluptatibus minus porro sunt totam quod commodi odit maxime similique, dolorum aut quo atque. Deleniti, voluptas animi.</p>
</main>
这里是 codepen

关于html - 背景过滤器不适用于 Chrome 中的嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60997948/

相关文章:

html - style 标签中的 import filename.css 与 link 标签的导入率如何与 css 文件相关

html - 如何使用 CSS 将白色透明图像重新着色为任意颜色?

html - CSS 笨重的悬停过渡

css - 如何根据特定尺寸调整视频?

c# - 使用 ASP.NET MVC 将 html 表导出到 Excel 文件

jquery - Bootstrap 3.1.1 缩略图 slider

javascript - ng-滚动条 : Right to left issue when horizantal scrolling

javascript - 单击时如何保留按钮周围的矩形边框

CSS 3 过滤器(模糊)不使用过渡持续时间

css - 如何制作多个 DROP-shadow?