Html 将子元素放置在z索引大于它的元素之上';父母

Html 将子元素放置在z索引大于它的元素之上';父母,html,css,Html,Css,正如标题所说,我试图将一个元素放置在z索引大于其父元素的元素之上 例如,我有以下HTML: HTML: 如图所示,红线(.info)实际上应该是一个较大的矩形,但你看不到它的原因是因为它隐藏在灰色的.box后面 如何更改z索引的位置,使红色框显示在灰色框的上方,而蓝色的.line保持在灰色框的后面?如果将.line的z索引放置在.box的上方,这将导致红色框显示在灰色框的上方: .box{ z-index: 1 } .line { z-index: 2 } 这应该可以解决问题

正如标题所说,我试图将一个元素放置在z索引大于其父元素的元素之上

例如,我有以下HTML:

HTML:

如图所示,红线(
.info
)实际上应该是一个较大的矩形,但你看不到它的原因是因为它隐藏在灰色的
.box
后面


如何更改z索引的位置,使红色框显示在灰色框的上方,而蓝色的
.line
保持在灰色框的后面?

如果将.line的z索引放置在.box的上方,这将导致红色框显示在灰色框的上方:

.box{
    z-index: 1
}
.line {
    z-index: 2
}
这应该可以解决问题

编辑: 将.info div移到.line之外,例如

HTML:

发件人:

还要注意的是,嵌套起着很大的作用。如果元素B位于元素A的顶部,则元素A的子元素永远不能高于元素B

这正是你想要做的。如果希望
.line
位于
.box
后面,则它的子
.info
永远不会出现在
.box
的顶部,因为它的父对象本身就在它后面

为了实现您想要的,您应该更改
HTML
结构,使
.info
位于
.line
之外

例如:

.box{
位置:相对位置;
z指数:1;
宽度:500px;
高度:40px;
背景:灰色;
}
.box.info{
宽度:50px;
高度:25px;
背景:红色;
}
.线路{
位置:相对位置;
顶部:45px;
宽度:500px;
高度:50px;
背景:蓝色;
}


.line
需要在
.box
后面。好的,问题是html代码的结构,因为redbox(.info)位于.line元素内部,它有一个相对于此容器的z索引。因此,您需要做的是将.info移到.line元素之外,这样它将与.box元素处于同一级别,并且能够与其他元素相比具有z索引。
.line
需要位于
.box
后面。使用当前标记,我认为不可能同时使用z索引将.line放在.box后面和.info放在.box前面,因为.info是.line的子项,为此,请在当前标记之外设置.info并将其放在.box后面,然后应用比.box更低的z索引。
body {
    margin: 50px;
}

.box {
    background: grey;
    width: 500px;
    height: 40px;
    z-index: 10;
    position: relative;
}

.line {
    background: blue;
    width: 500px;
    height: 5px;
    z-index: 9;
    position: relative;
    top: 0;
    overflow: visible;
}

.line .info {
    width: 50px;
    height: 25px;
    background: red;
}
.box{
    z-index: 1
}
.line {
    z-index: 2
}
<div class="line"></div>
<div class="info"></div>
<div class="box"></div>
.box {
    z-index:10;
}
.line {
    z-index:9;
}
.box {
    z-index:11;
}