是否可以使用z-index在其父元素后面添加子元素

Roc*_*och 15 html css position z-index

我想知道是否可以在z-index的父元素后面有一个子元素.

我想在他的内容之上使用父div作为透明颜色层.

gua*_*ari 17

为什么不?当然可以,而且很简单:

  1. 给你想要的元素一个非静态的位置;
  2. 一套z-index孩子-1;
  3. 创建主容器上的堆叠内容(由在其上的设定 z-index,opacity,transforms或whatelse产生一个复合层).

.container {
    position: absolute;
    z-index: 0; /* or eg. opacity: 0.99;*/
  
    background-color: blue;
    color: lightblue;
    width: 100%;
    height: 100%;
    text-align: center;
}

.parent {
    position: relative;
  
    background-color: rgba(100, 255, 150, 0.75);
    color: green;
    width: 50%;
    height: 30%;
    top: 30%;
    left: 20%;
}

.child {
    position: absolute;
    z-index: -1;
  
    background-color: orange;
    color: yellow;
    width: 100%;
    height: 100%;
    top: -50%;
    left: 20%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
    <span>container</span>
    <div class="parent">
        <span>parent</span>
        <div class="child">
            <span>child</span>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

(如果父级用作透明层,请务必使用background-image或rgba background-color:子级继承opacity父级)

  • 这是最好的答案.如果`.parent`有一个固定的位置,这也行不通,如果你可以改为绝对. (3认同)
  • 您的回答很好,我已投票赞成;一种说法:避免在解释中说“很容易”。如果事情真的很简单,那就不需要解释了,对吧!在这种情况下,您正在部署的CSS知识可能非常丰富,而您已经忘记了拥有的CSS知识!当您还不了解某些内容时,阅读“这很容易”只会使读者感到不必要的愚蠢。 (2认同)

Dav*_*omb 6

简短的回答是 ;) 这里有一篇很棒的文章,描述了如何使用元素的堆叠顺序来允许 z-index 为负,以便将元素放在其父元素的后面。

http://philipwalton.com/articles/what-no-one-told-you-about-z-index/


Str*_*lok 1

不可能,因为每个定位元素都会创建一个堆叠上下文。

说明1说明2