z-index 在固定 div 上堆叠似乎不起作用

z-index stacking on fixed divs doesn't seem to work

我不明白为什么 z-index 在我的页面上不起作用。

这是一个工作示例:https://jsfiddle.net/daeyqv31/

#login_modal_wrapper {
  background: #eee;
  background: red;/*rgba(0,0,0,0.7);*/
  width: 100%; height: 100%;
  position: fixed; top: 0; left: 0;
  z-index: 10003;
}

#login_modal {
  z-index: 10002;
  background: #eee;
  border: 2px solid #092834;
  border: 2px solid rgba(9,40,52,0.6);
  border-radius: 20px;
  width: 700px;
  height: 240px;
  position: fixed;
  top: 50%;
  left: 50%;
  margin-left: -350px;
  margin-top: -120px;
}
#login_modal_wrapper.over {
    z-index: 100003; // this needs to go OVER login_modal
}
#ajax_spinner {
  width: 34px;
  height: 34px;
  position: fixed;
  top: 50%;
  left: 50%;
  margin-left: -17px;
  margin-top: -17px;
  z-index: 200000;
}

然而,我也希望能够强制 #login_modal_wrapper div 去 OVER #login_modal。所以,我得到了这个(只是一个基本示例);

https://jsfiddle.net/daeyqv31/1/

所以这个:

<div id="ajax_spinner">
    loading icon
</div>
<div id="login_modal_wrapper">
  <div id="login_modal"></div>
</div>

变为:

<div id="ajax_spinner">
    loading icon
</div>
<div id="login_modal_wrapper" class="over">
  <div id="login_modal"></div>
</div>

...然而 z-index 似乎并没有得到尊重(它仍然在顶部显示 #login_modal,而实际上它应该在 #login_modal_wrapper[=21 后面=]

更新: 如下所述,无法将 更高 z-index 应用于 div 即 parent。为了解决这个问题,我只是稍微调整了一下 HTML:

<div id="ajax_spinner"><img src="/images/new/ajax-loader.gif" /></div>
<div id="login_modal"></div>
<div id="login_modal_wrapper"></div>

这现在完全符合预期:)

因为 #login_modal_wrapper 包含另一个 <div> 元素,所以 z-index 无法工作。你可以试试:

<div id="login_modal_wrapper">
  <div class="div-above"></div>
  <div id="ajax_spinner">
    loading icon
  </div>
  <div id="login_modal"></div>
</div>

和CSS:

.div-above {
  width: 100%;
  height: 100%;
  background: blue;
  position:fixed;
  z-index: 10;
}

这里是 updated fiddle.