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.
我不明白为什么 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.