【问题标题】:Child overlaps other element despite having lower z-index?尽管 z-index 较低,但子元素与其他元素重叠?
【发布时间】:2012-12-07 07:41:19
【问题描述】:

所以我今天一直在试验 z-index,我真的不明白这里发生了什么。

这是一个非常简化的 HTML 版本:

// content has z-index of 30, pos abs
<div class="content">
    // content-centered has z-index of 32, pos rel
    <div class="content-centered">
        // Text and buttons goes here
    </div>
</div>

// bubbles has z-index of 31, pos abs
<div class="bubbles">
    <div class="bubbles-centered">
        // Bubbles goes here
    </div>
</div>

目标是让 .content 提供背景内容,然后是背景上方的气泡,最后是气泡上方的内容。出于某种原因,正在发生的事情是气泡位于内容上方。

查看演示:http://jsfiddle.net/zFFkv/1/

给它几秒钟的时间让气泡出现在内容上。您无法选择文本或按下按钮,因为气泡层位于内容层之上,即使它设置在下方。这是怎么回事?子元素不继承父索引吗?

有什么想法吗?

【问题讨论】:

标签: css position z-index children


【解决方案1】:

您可以在气泡元素上将指针事件设置为无,以防止它阻塞下面的链接,尽管我认为它在 IE 中没有很好的支持。

.bubbles {
     pointer-events: none;
}

Demo

【讨论】:

  • 很好,不知道!
【解决方案2】:

z-indices 是相对于其父级而不是整个文档进行解析的。

.bubbles 高于.content,这对你来说很重要。 .content 内的所有子级都将低于.bubbles,但可以相对于彼此排序。

要执行您想做的事情,.content-centered.bubbles 必须是兄弟姐妹。

【讨论】:

  • 好吧,废话。这对我来说并不是一个真正的选择。如果您检查了演示,您会发现我在 .content 中有几个 &lt;segment&gt;,它们都有自己的 .content-centered。将 .bubbles 放在 .content-centered 中意味着它的多个副本,这并不好。 (也只是感觉不对)有解决办法吗?
  • 我不是说把.bubbles 放在.content-centered 里面,我的意思是把.bubbles 放在.content 里面。在您的简单示例中,这意味着.bubbles 可以高于.content 和低于.content-centered。在演示中,这意味着气泡容器位于 sections 旁边,并且可以在它们下方。
  • 更准确地说,它们是相对于它们的堆叠上下文的。这些上下文通常由定位的父母创建,但并非严格意义上的。
  • @freejosh 看到这个:i.imgur.com/Qbe9h.png。这就是它实际上的样子。将每个&lt;section&gt; 视为.content。每个&lt;section&gt; 都有自己的背景,z-index 为 30。由于有多个部分(将它们视为页面),我必须有多个 .bubbles 副本(每个部分内都有一个)。我能做的就是将背景从每个片段移到#slide-container 的同级中,这样就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2021-02-12
  • 2017-03-16
  • 1970-01-01
  • 2011-01-31
  • 2020-03-02
相关资源
最近更新 更多