这是一个非常简单的问题代码。
1)是否有另一种方法可以使嵌套的“内部”div位于“底部”div的顶部,我能做到的唯一方法是给'内部div一个z-index整数值。
示例适用于z-index:90;
但不适用z-index: auto;
我无法改变'外部'和'底部'div的html / css。
2)这个问题是因为呈现html的顺序吗?
.outer {
background: red;
width: 200px;
height: 100px;
position: relative;
z-index: auto;
}
.inner {
background: yellow;
width: 50px;
height: 50px;
position: absolute;
left: 0;
top: 90px;
z-index: 90;
/* z-index: auto; why is it not working?*/
}
.bottom {
background: blue;
width: 200px;
height: 100px;
position: relative;
}
<div class="outer">
<div class="inner">testing testing</div>
</div>
<div class="bottom"></div>
答案 0 :(得分:2)
这种情况正在发生,因为auto
为其提供了z-index
的父级。 DOM中较低的元素放置在它们上方的元素上。
MDN Docs
该框未建立新的本地堆叠上下文。当前堆叠上下文中生成的框的堆栈级别与其父框的相同。
例如:
div{
height:100px;
position:relative;
}
div:after{
position:absolute;
content:"Test";
top:100%;
}
.upper{
background:red;
}
.lower{
background:blue;
}
&#13;
<div class="upper"></div>
<div class="lower"></div>
&#13;
.upper
在.lower
下呈现,因此隐藏了.upper
中的文字。
答案 1 :(得分:0)
通过使用z-index: auto;
,您可以为元素提供父级的z索引(如果父级未设置值,则为0)。如果在DOM中的第一个元素之后具有非静态位置的元素(也使用z-index:0),则第二个元素优先于第一个元素。如果浏览器具有相同的z-index,则浏览器始终显示最后一个元素。
您可以定义正或负z-index来改变默认行为。
答案 2 :(得分:0)
将蓝框放在static
位置,或将z-index:1;
设置为.outer
div。 .outer
内的任何内容都将引用.outer
z-index
值。
没有z-index
的示例,让position:relative
继续前进:
.outer {
background: red;
width: 200px;
height: 100px;
position: relative;
/* default value, no need to rewrite it del this >z-index: auto; */
}
.inner {
background: yellow;
width: 50px;
height: 50px;
position: absolute;
left: 0;
top: 90px;
/* z-index: 1;1 would be enough if none set elsewhere in same area */
}
.bottom {
background: blue;
width: 200px;
height: 100px;
/* position: relative; drop it no need of z-index relative,absolute,fixed comes on top of static element */
}
<div class="outer">
<div class="inner">testing testing</div>
</div>
<div class="bottom"></div>
如果您想保留position:relative
蓝框,请仅在z-index
上设置.outer
.outer {
background: red;
width: 200px;
height: 100px;
position: relative;
z-index: 1;
}
.inner {
background: yellow;
width: 50px;
height: 50px;
position: absolute;
left: 0;
top: 90px;
}
.bottom {
background: blue;
width: 200px;
height: 100px;
position: relative;
}
<div class="outer">
<div class="inner">testing testing</div>
</div>
<div class="bottom"></div>