我有两个嵌套的CSS元素。我需要让父元素位于子元素的顶部,即z轴的上方。仅设置z-index是不够的。
我无法在子项上设置负z-index,将其设置为我实际页面上的页面容器下方。这是唯一的方法吗?
.parent {
position: relative;
width: 750px;
height: 7150px;
background: red;
border: solid 1px #000;
z-index: 1;
}
.child {
position: absolute;
background-color: blue;
z-index: 0;
color: white;
top: 0;
}
.wrapper
{
position: relative;
background: green;
z-index: 10;
}
<div class="wrapper">
<div class="parent">
parent parent
<div class="child">
child child child
</div>
</div>
</div>
答案 0 :(得分:67)
为子项设置负z-index
,并删除父项上的一组。
.parent {
position: relative;
width: 350px;
height: 150px;
background: red;
border: solid 1px #000;
}
.parent2 {
position: relative;
width: 350px;
height: 40px;
background: red;
border: solid 1px #000;
}
.child {
position: relative;
background-color: blue;
height: 200px;
}
.wrapper {
position: relative;
background: green;
height: 350px;
}
<div class="wrapper">
<div class="parent">parent 1 parent 1
<div class="child">child child child</div>
</div>
<div class="parent2">parent 2 parent 2
</div>
</div>
答案 1 :(得分:49)
幸运的是存在一个解决方案。您必须为父级添加包装器并更改此包装器的z-index(例如10),并将子级的z-index设置为-1:
.parent {
position: relative;
width: 750px;
height: 7150px;
background: red;
border: solid 1px #000;
z-index: initial;
}
.child {
position: relative;
background-color: blue;
z-index: -1;
color: white;
}
.wrapper {
position: relative;
background: green;
z-index: 10;
}
<div class="wrapper">
<div class="parent">parent parent
<div class="child">child child child</div>
</div>
</div>
答案 2 :(得分:7)
其中一些答案确实有效,但设置position: absolute;
和z-index: 10;
似乎非常强大,只是为了达到要求的效果。我发现以下是所有需要的,但不幸的是,我无法进一步减少它。
<强> HTML:强>
<div class="wrapper">
<div class="parent">
<div class="child">
...
</div>
</div>
</div>
<强> CSS:强>
.wrapper {
position: relative;
z-index: 0;
}
.child {
position: relative;
z-index: -1;
}
我使用这种技术来实现图像链接的边界悬停效果。这里有一些代码,但它使用上面的概念来显示图像顶部的边框。
答案 3 :(得分:3)
由于您的div是position:absolute
,因此就位置而言,它们并不是真正嵌套的。在你的jsbin页面上,我将HTML中div的顺序切换为:
<div class="child"><div class="parent"></div></div>
红色的盒子盖着蓝色的盒子,我认为这就是你要找的东西。
答案 4 :(得分:3)
破解了。基本上,正在发生的事情是,当你将z-index设置为负数时,它实际上忽略了父元素,无论它是否定位,并且位于下一个定位元素的后面,在你的情况下它是你的主要容器。因此,您必须将您的父元素放在另一个定位的div中,并且您的子div将位于其后面。
为了让我的代码能够正常工作,解决这个问题对我来说是一个救生员,因为我的父元素无法定位。
我发现所有这些都非常有用,可以达到指示的效果:Using only CSS, show div on hover over <a>
答案 5 :(得分:2)
您需要在父级和子级上使用position:relative
或position:absolute
才能使用z-index
。
答案 6 :(得分:-10)
式:
.parent{
overflow:hidden;
width:100px;
}
.child{
width:200px;
}
体:
<div class="parent">
<div class="child"></div>
</div>