我正在尝试使用以下html和css创建覆盖图
div.relative {
position: relative;
width: 400px;
height: 200px;
border: 3px solid #73AD21;
}
div.absolute {
position: absolute;
top: 50%;
right: 0;
width: 200px;
height: 100px;
border: 3px solid #73AD21;
opacity: 1;
background-color: blue;
}
.overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.95);
color: white;
z-index: 1;
}
.div1 {
animation: 750ms 1 forwards ani;
}
@keyframes ani {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
<h2>
position: absolute;</h2>
<p>An element with position: absolute; is positioned relative to the nearest positioned ancestor (instead of positioned relative to the viewport, like fixed):</p>
<div class="relative">
This div element has position: relative;
<div class="div1">
This is a div
<div class="overlay">
This div element has position: fixed;
</div>
</div>
<div class="absolute">
This div element has position: absolute;
</div>
</div>
我正在尝试创建一个覆盖整个区域的叠加层。但是,问题是,当我添加动画时,尽管没有应用动画,但它还是将绝对元素置于最前面
答案 0 :(得分:2)
将固定元素移到底部,类似这样
<div class="relative">
This div element has position: relative;
<div class="div1">
This is a div
</div>
<div class="absolute">
This div element has position: absolute;
</div>
</div>
<div class="overlay">
This div element has position: fixed;
</div>
答案 1 :(得分:0)
由于我的最后答案不是最佳做法,请尝试使用此方法。 因此,将这些样式添加到带有div1类的div中:
.div1 {
animation: 750ms 1 forwards ani;
position: relative;
z-index: 2;
}
z-index无效,因为所定位的绝对元素与固定元素位于不同的级别,因此您需要定义同一元素级别的z-index(在这种情况下为div1和absolute)。 z-index还需要具有位置相对属性才能起作用。
答案 2 :(得分:0)
(向所有人寻求答案)我发现了此代码的问题。当我们应用值小于1的不透明度动画时,它将为该特定元素及其子元素创建另一个堆叠上下文,并且相对于该堆叠上下文堆叠了叠加层。我通过将animation-fill-mode删除为none来解决它,因为此后它不会影响任何CSS。