代码之家  ›  专栏  ›  技术社区  ›  dclowd9901

如何使子元素显示在其父元素之后(Z索引较低)?

  •  19
  • dclowd9901  · 技术社区  · 14 年前

    我需要一个特定的动态元素总是出现在另一个元素之上,不管它们在DOM树中的顺序如何。这有可能吗?我试过了 z-index position: relative ,但似乎不起作用。

    我需要:

    <div class="a">
        <div class="b"></div>
    </div>
    
    <div class="b">
        <div class="a"></div>
    </div>
    

    渲染时显示完全相同。出于灵活性的考虑(我计划发布一个需要这个功能的插件),我真的不想求助于绝对或固定的定位。

    为了实现我想要的函数,我做了一个条件语句,如果重叠的子元素阻塞了其父元素的视图,那么它将变得透明。这不是完美的,但它是某种东西。

    4 回复  |  直到 6 年前
        1
  •  19
  •   jholster    14 年前

    如果元素构成一个层次结构,就不能这样做,因为每个定位元素都会创建新的 stacking context 和z-index是相对于同一堆栈上下文的元素的。

        2
  •  3
  •   Damir Kotoric    10 年前

    我已经成功地使用了以下内容。

    Z-指数-1;

        3
  •  1
  •   moeses    6 年前

    通过创建一个模仿父元素的伪元素,我找到了一种将子元素放在元素后面的方法。对下拉菜单之类的东西很有用-希望它有用,八年前的用户!

    https://jsfiddle.net/x7up68s2/7/

    .container > div {
    
      // will be beyond its child
      background-color: red;
      width: 150px;
      height: 50px;
      z-index: 10;
    
      // will be above its "child"
      &:before {
        content: '';
        display: block;
        position: absolute;
        height: 100%;
        width: 100%;
        background-color: red;
        z-index: 7;
        top: 10px;
      }
    }
    
    .a > .b,
    .b > .a {
      z-index: 5;
      position: absolute;
      width: 100%;
      height: 100%;
      background-color: teal;
    }
    
        4
  •  0
  •   mkoryak    14 年前

    你需要的是 position: absolute 以便Z索引工作。

    此外,您还需要设置 left top CSS属性将元素放置在正确的位置。您可能需要使用JavaScript来完成这项工作。