html - Webkit - 修复定位元素似乎具有固有的堆叠上下文

标签 html css google-chrome safari webkit

在使用 ScrollMagic 时在 Chrome 中遇到了这个“错误”和一个固定的标题。

我会保持简短,我想将一个绝对定位元素放在另一个元素前面,但是这两个元素位于单独的固定定位容器中。这是代码:

.container {
    position: absolute;
}

.fixed {
    position: fixed;
    left: 100px;
}

.elm {
    position: absolute;
    width: 50px;
    height: 50px;
}

.elm-back {
    z-index: 1;
    top: 50px;
    left: 50px;
    background: teal;
}

.elm-front {
    z-index: 2;
    top: 25px;
    left: 25px;
    background: salmon;
}
<div class="container container-1">
    <div class="elm elm-front"></div>
</div>
<div class="container container-2">
    <div class="elm elm-back"></div>
</div>

<div class="container fixed container-1">
    <div class="elm elm-front"></div>
</div>
<div class="container fixed container-2">
    <div class="elm elm-back"></div>
</div>

前两个框在绝对定位容器内,另外两个在固定定位容器内。

Firefox 和 IE 都按预期处理它(下图)。

Example in Firefox and IE

Chrome 和 Safari 会执行以下操作:

Example in Webkit

有人知道吗?有关于为什么会发生这种情况的消息来源,并希望有解决方案或解决方法?我已经尝试使用 transform: translateZ(0),我唯一可以实现的是前两个元素的行为与其他两个元素相同,但我希望相反。

最佳答案

您将他们的容器设置为固定样式,因此他们 Z 索引到直接文档 - 容器。虽然第一组也被 Z 索引到文档(因为它们之间没有任何相关父级),但第一组是 elements 被设置样式,因此它们正确地被 Z 索引。

浏览器呈现每个容器的固定位置并通过它们自己的算法将它们放在彼此上,所以如果你想修复它,只需让浏览器知道你想要的容器的 Z 索引:

.container-1 {
  z-index: 1;
}

.container-2 {
  z-index: 0;
}

或者从一开始就将每个绝对 DIV 放在一起,这样它们将被 Z 索引到同一父级。

关于html - Webkit - 修复定位元素似乎具有固有的堆叠上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30844973/

相关文章:

css - 带有选择的 float DIV 在布局中创建空列,为什么?

java - 如何在没有 FORM POST 操作键的情况下编写项目数组的 HTML BODY 字符串?

html - 对齐 HTML 表格中的图像

html - 为什么 Image 在 table 里面这么小?

javascript - 动态调色板 - Jquery?

html - 在 UIWebView 中垂直和水平居中 HTML

jquery - Marquee 标签在 IOS 平台上无法正常工作

javascript - 使用 Javascript 在 Chrome 中强制重新加载页面 [无缓存]

Python、Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM

android - WebGL 适用于某些移动平台,但不适用于其他平台