【发布时间】:2013-11-08 01:31:15
【问题描述】:
我正在尝试覆盖/忽略一个元素的堆叠上下文,以便它可以定位在相对于页面根目录的 z 轴上。
不过根据What No One Told You About Z-Index的文章:
如果一个元素包含在堆叠顺序底部的堆叠上下文中,则无法让它出现在堆叠顺序更高的不同堆叠上下文中的另一个元素之前,即使使用z-index 十亿!
可以通过以下三种方式之一在元素上形成新的堆叠上下文:
- 当一个元素是文档的根元素(元素)时
- 当元素具有非静态的位置值和非自动的 z-index 值时
- 当元素的不透明度值小于 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;,(这会在第一个节点上创建一个new stacking context)那么即使如果.red 有z-index:1,它仍然会被放置在其他元素的后面 因为它只是呈现为该堆栈中的最高元素。
Working Demo in jsFiddle
看起来像这样:
问:有没有办法让元素忽略其任何父元素的堆栈上下文并要求相对于页面的原始堆栈上下文定位?
【问题讨论】: