工作小提琴示例!
如果您将此问题的范围限制在您提供的代码中,那么它工作得很好!例如,在 Fiddle 上,您可以看到我为position:fixed
div
as 放置了背景颜色以说明解决方案正在运行。
但是,如果您正在使用z-index
,可以安全地假设您的元素z-index
已经position
应用了一些。
考虑到这一点,这部分:
<div style="z-index:902;">
<div style="position: fixed; width: 100%; height: 100%; left: 0; top: 0;">
Overlay
</div>
Contents of container 1
</div>
不能作为“整个页面”叠加使用,因为内部 divposition:fixed
位于堆叠元素内,该堆叠元素的侧面(兄弟姐妹)具有其他堆叠元素,与z-index:902;
.
看这个小提琴来说明!
如果将兄弟元素移动到较低的堆栈位置,则可以使其工作。请参阅此小提琴示例!
已编辑
我的答案的第一部分是按照My Head Hurts的建议进行编辑的(请参阅评论),以更好地解释第一个 Fiddle 有效,因为 OP 将问题留给猜测!对此答案提出并批准的两个解决方案没有进行任何更改!
一个解法
会将叠加层放置在所有其他 div 之外,但这取决于您的目标:
<div style="z-index:902;">
Contents of container 1
</div>
<div style="z-index:902;">
Contents of container 2
</div>
<div style="z-index:902;">
Contents of container 3
</div>
<div style="position:fixed; z-index:10000; left:0; top:0; right:0; bottom:0; background:#ccc;">
Overlay
</div>
请参阅此小提琴示例!
已编辑
因为这个评论:
是的,这将是理想的答案,我会接受它,因为它回答了我所写的问题,但我面临的问题来自一些 JavaScript,它动态改变了我无法控制的其他容器的 z-index不可能将我的 div 放在它们之上。
假设你可以在里面放置你想要的任何东西container 1
,并且假设你正在使用或者可以使用 jQuery,你可以这样做来解决这个问题:
<div style="z-index:902;">
<div class="placeOutside" style="position:fixed; z-index:903; right:0; bottom:0; left:0; top:0; background:#ccc;">
Overlay
</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('.placeOutside').appendTo('body');
});
</script>
Contents of container 1
</div>
<div style="z-index:902;">
Contents of container 2
</div>
<div style="z-index:902;">
Contents of container 3
</div>
请参阅这个工作小提琴示例!