我正在尝试覆盖/忽略元素的堆叠上下文,以便它可以相对于页面根定位在 z 轴上。
但是,根据文章What No One Told You About Z-Index:
如果一个元素包含在堆叠顺序底部的堆叠上下文中,那么即使使用 z-index,也无法让它出现在堆叠顺序更高的不同堆叠上下文中的另一个元素的前面十亿!
可以通过以下三种方式之一在元素上形成新的堆叠上下文:
- 当一个元素是文档的根元素时(元素)
- 当一个元素的位置值不是 static 并且 z-index 值不是 auto 时
- 当元素的不透明度值小于 1 时
使用以下示例:
.red, .green, .blue { position: absolute; }
.red { background: red; }
.green { background: green; }
.blue { background: blue; }
<div><span class="red">Red</span></div>
<div><span class="green">Green</span></div>
<div><span class="blue">Blue</span></div>
如果第一个 div 是给定的(在第一个节点上opacity:.99;
创建一个新的堆叠上下文),那么即使.red
has z-index:1
,它仍然会被放置在其他元素的后面,因为它只是呈现为该堆栈中的最高元素。
jsFiddle 中的工作演示
看起来像这样:
问:有没有办法让一个元素忽略它的任何父元素的堆栈上下文并要求相对于页面的原始堆栈上下文定位?