【问题标题】:Unexpected z-index stacking behavior意外的 z-index 堆叠行为
【发布时间】:2012-05-11 23:59:21
【问题描述】:

基本上,我试图在我的网站上将重叠角放在#page_container 后面,以便看起来图像与页面重叠。

现场示例:http://jsfiddle.net/xBwQp/15/

HTML:

<div id="page_container">
    <div id="banner_wrapper">
        <img id="banner_image" src="http://placehold.it/350x150" />
        <div class="triangle-l"></div>
        <div class="triangle-r"></div>        
    </div>
</div>

CSS:

#page_container {
    background: red;
    width: 400px;
    position: relative;
    z-index: 10;
}

#banner_wrapper {
  position: relative;
}

#banner_image {
  position: relative;
}

.triangle-l {
  border-color: transparent green transparent transparent;
  border-style: solid;
  border-width: 15px;
  height: 0px;
  width: 0px;
  position: absolute;
  right: 0px;
  top: 0px;
  z-index: 5;
}

.triangle-r {
  border-color: transparent transparent transparent blue;
  border-style: solid;
  border-width: 15px;
  height: 0px;
  width: 0px;
  position: absolute;
  right: 0px;
  top: 0px;
  z-index: 5;
}

您可以看到三角形.triangle-l.triangle-rz-index:5 明显低于#page_container z-index:10,但它们仍然出现在#page_container 上方。

我已经能够通过将.triangle-l.triangle-r 设置为z-index:-1 来实现我想要的结果,但这仅适用于FF、Opera 和Webkit。不支持 IE。

我相信这与堆叠上下文有关。但是,我不确定如何通过跨浏览器兼容性来实现所需的结果。

【问题讨论】:

    标签: css position z-index


    【解决方案1】:

    你是绝对正确的 - 这是关于堆叠上下文。

    每当您将 z-index 放在元素上时,您都会创建一个新的上下文,因此因为三角形是 #page_container 的后代,它们将属于 #page_container 的堆叠上下文,无论您使用什么 z-index 编号选择三角形,它们仅在此上下文中有意义,您将无法将它们向后移动到此容器后面。

    在此处详细阅读:https://developer.mozilla.org/en/CSS/Understanding_z-index/The_stacking_context

    可能的解决方案是;

    • 将元素移出 html 结构中的容器(以及 然后使用 css 将它们放置在您想要的位置)
    • 从容器中删除 z-index 并将三角形设置为 z-index -1 以将它们移动到文档本身下方

    【讨论】:

    • 将三角形设置为 z-index -1 是我目前所拥有的。但是,这对 IE 不友好,因此我进退两难。
    • 您在使用哪个版本的 IE 时遇到问题?我刚刚在 IE8 中进行了测试,这是我目前可用的,它的工作原理与我在回答中概述的完全一样:jsfiddle.net/xBwQp/18
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2018-02-04
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多