【问题标题】:z-index issue CSSz-index 问题 CSS
【发布时间】:2013-03-17 23:46:24
【问题描述】:

我有一个容器,并且在容器中动态生成了 div。

HTML

<div id="overlay">
</div>
<div id="cont">
    <div id="e1">
        Some
    </div>
    <div id="e2">
        Content
    </div>
</div>

CSS

#cont{
    position: fixed;
    top:40%;
    left:20%;
    z-index:999;
    color:#a8a8a8;
}
#overlay{
    position:fixed;
    background: rgb(0,0,0);
    opacity: 0.5;
    width:100%;
    height:100%;
    top:0;
    left:0;
    z-index:1000;
}
#e2{
    z-index:1001;
}

检查这个 jsfiddle: http://jsfiddle.net/UkbXU/

我有一个 z-index 1000 和背景 rgba(0,0,0,0.5) 的叠加层,而照片容器在叠加层后面我只希望一个元素在叠加层之上,即 z-index 1001。那里是容器中的其他元素,我这样做是为了显示元素突出显示的效果。但是使用 z-index: 1001 创建一个类不会将元素置于覆盖层之上。

如何将一个元素的 z-index 设置为大于容器?

【问题讨论】:

    标签: css z-index


    【解决方案1】:

    您必须将覆盖 div 移动到内容 div 中:

    <div id="cont">
        <div id="overlay"></div>
    
        <div id="e1">
            Some
        </div>
        <div id="e2">
            Content
        </div>
    </div>
    

    和位置#e2 必须设置为相对。见http://jsfiddle.net/UkbXU/10/

    否则是不可能的,因为#cont 和#overlay 都在创建新的堆叠上下文。这些无法再次合并。

    【讨论】:

    • 是的,这很好,但如果 #cont 是例如侧边栏中的小部件然后覆盖不会仅针对小部件区域覆盖整个屏幕,还是?
    • #overlay 占据整个屏幕(在 CSS 宽度/高度/位置中定义)。但是否覆盖整个页面取决于#cont 在整个页面的堆叠上下文中的位置。
    【解决方案2】:

    试试

    #e2{
        z-index:1001;
        position: absolute;
    }
    

    它应该成功了。

    如果不尝试:

    #e2{
        z-index: 9999 !important;
        position: absolute !important;
        top: 0px; //you can change that
        left: 0px; //you can change that
    }
    

    如果它仍然无法正常工作,很可能是某些 javascript 将更大的 z-indes tahn 9999 设置为 #overlay。

    【讨论】:

    • 您需要将#cont z-index 更改为超过覆盖标识符。你想做什么?
    • 如果将 z-index 更改为 #cont 那么它可以工作,但我只想显示一个高于 #overlay 的内容
    • 您需要使用 javascript 来完成。获取内容 div 并将其放在覆盖之前或类似的东西之前。您是在某些画廊模式下执行此操作还是显示某些错误?
    猜你喜欢
    • 2011-03-13
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多