【问题标题】:nested z-index issue on Firefox with higher z-index behing lower z-indexFirefox 上的嵌套 z-index 问题,z-index 较高,z-index 较低
【发布时间】:2012-11-23 10:56:06
【问题描述】:

我在 Firefox 和其他浏览器上的嵌套 z-index 有问题,我有一个 z-index 为 30000 的 div 位于 zindex 为 9000 的 label 下方。我想这个是由具有 30000 z-index 的 div 位于具有 2000 s-index 的 div 内引起的,但我删除了它并且它没有任何效果。

这里有什么明显的东西会导致这个问题吗?

<div class="field row olabel end_date">    
    <label for="cc_end_year" generated="true" class="error">* required</label>    
</div>

在我的标记中,我有一个弹出消息,在滚动一段文本时显示/隐藏。

<div class="field row olabel">
   <div style="display:none;" class="whats_this_popup"></div>
</div>

我的 CSS:

#order_form .row.end_date {
   position: relative;
   z-index: 9000;
}    
label.error {
   z-index: 9001;
}
.whats_this_popup {
   left: 360px;
   padding: 20px;
   position: absolute;
   width: 205px;
   z-index: 30000;
}
#order_form .row {
   width: 435px;
   z-index: 2000;
}

【问题讨论】:

    标签: javascript html css forms z-index


    【解决方案1】:

    这是由stacking context 引起的。前者 div 的 stacking context 的 z-index 为 9000,而后者的 stacking context 的 z-index 为 2000。

    您给标签的 z-index 为 9001仅在其父级内。 z-index 在父级的堆叠上下文之外是没有意义的。同样,通过为 .whats_this_popup 指定 30000 的 z-index,您是说它将显示在其 z-index 小于 30000 的任何 兄弟姐妹 的前面,而不是z-index

    给后一个 包含 div 的索引 30000 将导致您想要的结果。

    【讨论】:

    • 是的,你完全正确。这归结为堆叠上下文问题。我已经记不清有多少次遇到 z-idex 的堆叠上下文问题了,尤其是在 IE7 上。
    猜你喜欢
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2011-03-13
    • 2011-09-07
    • 2014-08-02
    相关资源
    最近更新 更多