CSS 位置粘性和 Z-Index 叠加/模态

mil*_*man 11 html css z-index css-position

我的位置有问题:sticky 和 ​​z-index

我希望我在粘性元素中的模态被覆盖层覆盖。使用 position: relative 可以工作:模态在叠加层之前。但是当我使用 Sticky 时,模态位于覆盖层后面。

希望我的意思可以理解。这是示例:

.sticky {
    position: sticky; /* <-- dosen't work */
    /* position: relative; /* <-- work */
    top: 0;

    width: 100%;
    height: 200vh;
    background: red;
}

.modal {
    z-index: 1000;

    position: fixed; 
    margin: 0 auto;
    width: 200px;
    height: 200px;
    background: yellow;
    margin: 0 auto;
}

.overlay {
    z-index: 999;
    position: fixed;


    width: 100%;
    height: 100%;
    background: green;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    opacity: 0.75;
}
Run Code Online (Sandbox Code Playgroud)
<div class="overlay"></div>
<div class="sticky">
    <div class="modal">modal</div>
</div>
Run Code Online (Sandbox Code Playgroud)

小智 8

设置时position: relative.modal元素是相对于主体的,因为它具有position: fixed. 因此,1000 的 z-index 值将其置于前台。

当您使用 时position: sticky.sticky元素被定位,使用默认的 z-index 值。因此,它会将自己定位在后台,因为它.overlay的 z-index 值为 999。.modal作为 的子项.sticky,它永远无法走在 的前面.overlay

您必须更改 HTML 的结构,或者只是在.sticky元素上添加 z-index 。

  • 我在粘性元素上添加了 z 索引,但它仍然没有显示在前面 (3认同)