我做了一个模态(灵感来自Daisy UI),并希望给容器一个背景过滤器。要打开模态,请单击复选框。
body {
margin: 0px;
}
#container {
background: red;
{% comment %} backdrop-filter: blur(16px); {% endcomment %}
}
.modal {
pointer-events: none;
visibility: hidden;
position: fixed;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
display: flex;
justify-content: center;
align-items: center;
}
.modal-toggle:checked + .modal {
pointer-events: auto;
visibility: visible;
}
.modal-box {
background-color: blue
}
<div id="container">
<input id="modal" class="modal-toggle" type="checkbox" value="off"/>
<label class="modal" for="modal">
<label class="modal-box" for="">
modal-box
</label>
</label>
</div>
然而,当我取消backdrop-filter的注解时,modal会被约束到容器元素中。我不希望这样。我希望modal填充整个页面,即使父元素上有一个backdrop filter。
2条答案
按热度按时间a1o7rhls1#
它将在全身添加一个黑色透明阴影,但不会添加背景滤镜。
uklbhaso2#
这个例子显示了当背景设置为
position: absolute
时,将其包含在container
中,希望更接近所需的结果。尝试滚动查看模糊的
container
后面的元素(仅当模态可见时)。这似乎是因为带有
backdrop-filter
的父元素将使fixed
元素相对于父元素而不是视口放置。如果position属性为absolute或fixed,则包含块也可以由具有以下内容的最近祖先元素的填充框的边缘形成:...
...不是没有的背景滤波器(例如背景滤波器:模糊(10像素);)
不确定它是否能在用例中工作,但一个可能的解决方案是为背景使用一个单独的元素,也许如下例所示。
虽然不理想,但如果需要的话,这里的单独背景仍然可以进一步设计,以包含或抵消
container
。一个二个一个一个