如何让父元素出现在child之上

时间:2009-11-27 01:38:19

标签: css z-index

我有两个嵌套的CSS元素。我需要让父元素位于子元素的顶部,即z轴的上方。仅设置z-index是不够的。

我无法在子项上设置负z-index,将其设置为我实际页面上的页面容器下方。这是唯一的方法吗?

http://jsbin.com/ovafo/edit

.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>

7 个答案:

答案 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>

https://jsfiddle.net/uov5h84f/

答案 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;
}

我使用这种技术来实现图像链接的边界悬停效果。这里有一些代码,但它使用上面的概念来显示图像顶部的边框。

http://jsfiddle.net/g7nP5/

答案 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:relativeposition:absolute才能使用z-index

答案 6 :(得分:-10)

式:

.parent{
  overflow:hidden;
  width:100px;
}

.child{
  width:200px;
}

体:

<div class="parent">
   <div class="child"></div>
</div>