我有一个容器元素,它具有可变的不透明度.它的子元素应该让背景变得模糊.

问题是背景滤镜仅在父对象的不透明度正好为1时才适用.然而,如果我降低子对象本身的不透明度,背景滤镜将保留不变.

有没有人能帮我让它正常工作?

我不能使用背景色来更改容器的不透明度.

#container{
  opacity: 1;
  position: absolute;
  top:0;
  width: 200px;
  height: 80px;
  outline: 0.1px solid black;
}

#child{
  width: 100%;
  height: 100%;
  backdrop-filter: blur(10px)
}
<div>This should be blurred</div>
<div id="container">
  <div id="child"></div>
</div>
<div style="position: absolute; top: 80px">
<span>Parent opacity:</span><input type="range" id="parentRange" min="0" step="0.01" max="1" value="1"><span id="parentReadout">1</span><br>
<span>Child opacity:</span><input type="range" id="childRange" min="0" step="0.01" max="1" value="1"><span id="childReadout">1</span>
</div>

<script>
parentRange.oninput = (e) => {
  container.style.opacity = e.target.value
  parentReadout.textContent = e.target.value
}
childRange.oninput = (e) => {
  child.style.opacity = e.target.value
  childReadout.textContent = e.target.value
}
</script>

推荐答案

在看了specification个之后,如果没有一些未知的诡计,我确实不可能做我想做的事情.

我引用了下面的两个关键部分,但主要思想是滤镜应用到的元素是背景根元素和具有背景滤镜的元素之间的元素.背景根是至少符合一组标准中的一个的最接近的祖先,其中一个标准是具有不透明度.

因此,在上面的场景中,父级成为背景根,而blur is only applied to elements between it and the child.

规范:

元素E的背景根图像是将 通过以下步骤生产:

从E的最接近祖先的Backdrop Root element开始.

Paint all content, in painting order, between (and including) the ancestor Backdrop Root element and element E.

将绘制的内容展平到2D屏幕空间缓冲区中.

将元素E的边框转换到2D屏幕空间,并剪裁 最终绘制到此边框四边形的输出.

以及:

在文档中的任何位置,Backdrop Root都是由 下列任何一种情况.有关根触发器的信息,请参阅§ 3.2背景 有关每一项的更多详细信息:

文档的根元素(HTML).

Filter属性不是"None"的元素.

An element with an opacity value less than 1.

具有遮罩、遮罩图像、遮罩边框或剪辑路径属性的元素 值不是"None"的.

背景筛选器值不是"None"的元素.

混合混合模式值不是"Normal"的元素.

Css相关问答推荐

视频覆盖不适用于reactjs样式的组件

如何剪切一个正方形以便我可以绘制追逐边框?

如何使按钮:之后像按钮:之前一样可见

如何在不使用 sx props 的情况下从 Select 样式中定位 mui paper 组件?

基于高度的容器查询不起作用

如何增加 PrimeFlex 网格的间隙?

使用 React 和 Flexbox 文本溢出框外

不同的背景 colored颜色 取决于 URL

使用border-radius时填充元素之间的空间

普通流,流布局,块和内联布局有什么区别?

如何在 CSS 中更改 ::marker SVG colored颜色 ?

CSS 使文本扩展并保持居中与圆形扩展 div 的问题

在 CSS 中相对于另一个元素定位一个元素

如何在 CSS 中控制列表样式类型光盘的大小?

CSS:背景图像和填充

flex-wrap 如何与 align-self、align-items 和 align-content 一起使用?

我应该如何组织我的 CSS 文件的内容?

CSS3单向过渡?

将样式应用于第一行的单元格

如何重置或覆盖 IE CSS 过滤器?