【发布时间】:2012-03-16 04:04:10
【问题描述】:
抱歉,我无法发布完整的代码,我正在研究专有的东西。基本上我有一个问题,其中 z-index 为 6 的 DIV 被 z-index 为 5 的覆盖 DIV 阻止。是否有任何情况会发生这种情况?我正在绞尽脑汁想弄清楚为什么会这样。这没有任何意义。与嵌套 DIV 或 CSS position 有什么关系吗?
我为含糊不清表示歉意。我试图在 JSFiddle 中重新创建,但不幸的是它按预期工作。只有实际代码有问题。
结构:
<div id="window">
<div id="wall">
<div class="box" /><div class="box" /> .... many boxes
</div>
</div>
<div id="overlay" />
CSS:
#window {
position: relative;
width: 960px;
height: 700px;
overflow: hidden;
background: #666;
}
#wall {
position: relative;
width: 1640px;
height: 1600px;
-webkit-perspective: 2000;
}
#overlay {
position: absolute;
z-index: 5;
background: #000;
}
.box {
left: 0px;
top: 0px;
position: absolute;
width: 228px;
height: 228px;
color: #fff;
font-family: Helvetica, Arial, sans-serif;
font-weight: bold;
font-size: 0.8em;
-webkit-transform-style: preserve-3d;
z-index: 4;
cursor: pointer;
}
在特定事件时通过 jQuery 设置叠加尺寸:
$('<div id="overlay"></div>').css({
'left': $('#window').position().left + 'px',
'top': $('#window').position().top + 'px',
'width': $('#window').width() + 'px',
'height': $('#window').height() + 'px',
'opacity': 0.8
}).appendTo('body');
即使其中一个框的 z-index 为 6,并且叠加层为 5,叠加层仍位于所述框上方。
覆盖应该越过窗口,但让其中一个框通过。
为什么这个 JSFiddle 可以工作,而我的实际代码却不行?! http://jsfiddle.net/csaltyj/2gzTc/
【问题讨论】:
-
z-index 仅在定义位置时才起作用......也许您的 z-index 6 没有被应用。检查html
-
如果元素不是兄弟元素,它可能不起作用。
-
当您混合使用
absolute和relative项目时,Explorer 会将 z-index 分成不同的“集合”。就像所有absolute定位元素有一个z-index 一样,所有relative定位元素都有一个完全独立的z-index,忽略另一个。我知道没有其他浏览器有这个怪癖,所以这个应该很容易隔离。