过渡背景滤镜:父元素为 "overflow: hidden" 的模糊效果不起作用
Transitioning backdrop-filter: blur on an element with "overflow: hidden" parent is not working
我正在尝试将“fade-in/fade-out”转换应用到具有 backdrop-filter: blur
的绝对定位 div。
我遇到了一些障碍,但我几乎成功了。
首先,backdrop-filter: blur
默认情况下不可设置动画,因此您必须 animate the opacity of the element.
然后,由于元素的父元素 overflow
设置为隐藏,backdrop-filter
无法正常工作(至少在 Chrome 中)。可以解决 之后的问题(tl;dr;添加伪元素并对其应用过滤器)。
这两个部分虽然不能组合使用,但实际上,当过渡开始时,直到持续时间中指定的时间量过去时才会发生任何事情,然后突然应用过滤器。
是否有可能克服这个问题(最好是 css)?
p {
height: 400px;
}
.container {
position: relative;
width: 300px;
height: 300px;
border: 1px solid black;
overflow: hidden;
z-index: 1;
}
.overlay {
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 500ms ease;
z-index: 2;
}
.overlay::after {
content: "";
position: absolute;
inset: 0;
backdrop-filter: blur(2px);
}
.container:hover .overlay {
opacity: 1;
}
<div class="container">
<p> Lorem ipsum dolor sit amet </p>
<div class="overlay"></div>
</div>
您可能希望过渡发生在伪元素上并移动其不透明度。
p {
height: 400px;
}
.container {
position: relative;
width: 300px;
height: 300px;
border: 1px solid black;
overflow: hidden;
z-index: 1;
}
.overlay {
position: absolute;
inset: 0;
z-index: 2;
}
.overlay::after {
content: "";
position: absolute;
inset: 0;
backdrop-filter: blur(2px);
opacity: 0;
transition: opacity 500ms ease;
}
.container:hover .overlay::after {
opacity: 1;
}
<div class="container">
<p> Lorem ipsum dolor sit amet </p>
<div class="overlay"></div>
</div>
我正在尝试将“fade-in/fade-out”转换应用到具有 backdrop-filter: blur
的绝对定位 div。
我遇到了一些障碍,但我几乎成功了。
首先,backdrop-filter: blur
默认情况下不可设置动画,因此您必须 animate the opacity of the element.
然后,由于元素的父元素 overflow
设置为隐藏,backdrop-filter
无法正常工作(至少在 Chrome 中)。可以解决
这两个部分虽然不能组合使用,但实际上,当过渡开始时,直到持续时间中指定的时间量过去时才会发生任何事情,然后突然应用过滤器。
是否有可能克服这个问题(最好是 css)?
p {
height: 400px;
}
.container {
position: relative;
width: 300px;
height: 300px;
border: 1px solid black;
overflow: hidden;
z-index: 1;
}
.overlay {
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 500ms ease;
z-index: 2;
}
.overlay::after {
content: "";
position: absolute;
inset: 0;
backdrop-filter: blur(2px);
}
.container:hover .overlay {
opacity: 1;
}
<div class="container">
<p> Lorem ipsum dolor sit amet </p>
<div class="overlay"></div>
</div>
您可能希望过渡发生在伪元素上并移动其不透明度。
p {
height: 400px;
}
.container {
position: relative;
width: 300px;
height: 300px;
border: 1px solid black;
overflow: hidden;
z-index: 1;
}
.overlay {
position: absolute;
inset: 0;
z-index: 2;
}
.overlay::after {
content: "";
position: absolute;
inset: 0;
backdrop-filter: blur(2px);
opacity: 0;
transition: opacity 500ms ease;
}
.container:hover .overlay::after {
opacity: 1;
}
<div class="container">
<p> Lorem ipsum dolor sit amet </p>
<div class="overlay"></div>
</div>