我遇到了问题:
元素重叠元素,因为它具有更高的z指数(10对5)。元素具有子元素#sub-block-1&amp; #sub-block-2,#sub-block-1有子文本#text1,z-index = 20.但#zinin的z-index = 20的#text1仍然在z-index = 10下。为什么?< /强>
告诉我,我该如何解决这个问题?
必须有预定义的z-index(数字,不是'auto',小于z-index,例如,5 vs 10)。
我的例子: https://jsfiddle.net/nynsjv3L/1/
P.S。 上面的例子在jsfiddle中没有正确显示 - 元素的位置(#sub-block-1&amp; #sub-block-2)不起作用。
body {
background: #00ff00;
}
.screen {
position: absolute;
left: 0px;
top: 0px;
width: 100vw;
height: 100vh;
background: #ffffff;
opacity: 0.75;
z-index: 10;
}
#main-block {
position: absolute;
left: 500px;
top: 200px;
width: 700px;
height: 400px;
border: 2px solid #bb0000;
background: #ff0000;
z-index: 5;
}
.sub-block {
position: absolute;
width: 300px;
height: 150px;
background: #ffffff;
border: 4px solid #000000;
}
#sub-block-1 {
left: 100;
top: 100;
z-index: auto;
}
#sub-block-2 {
left: 275;
top: 175;
z-index: 11;
}
#text1 {
position: absolute;
left: 65px;
top: 55px;
color: #000000;
background: #ffff00;
font-size: 30px;
font-weight: 700;
z-index: 20;
}
#text2 {
position: absolute;
left: 65px;
top: 55px;
color: #00bbbb;
font-size: 30px;
font-weight: 700;
}
<div id='main-block'>
<div class='sub-block' id='sub-block-1'>
<div id='text1'>TEST TEXT</div>
</div>
<div class='sub-block' id='sub-block-2'>
<div id='text2'>NEW TEXT</div>
</div>
</div>
<div class='screen'></div>
答案 0 :(得分:1)
#text
仍在您的区块内,其索引低于其兄弟。 #text
部分仍与其父级的上下文块相同。您可以在this page中查看z-index的内部工作原理。
您需要创建一个新的堆叠上下文,以使文本显示在另一个块上方。其中一种可能的方法是将文本的不透明度更改为.99
,或使用transform
属性。不过,我不建议你这样做,因为它将来会引起更多麻烦。
不应经常使用Z索引。最好在HTML本身内部组织它。你应该重新考虑你的工作。
答案 1 :(得分:0)
<script src="js/controls/OrbitControls.js"></script>
与#main-block
位于同一级别,.screen
较低。因此,z-index
的子元素将始终与#main-block
及其子元素重叠。
每当您将元素设置为.screen
或position: relative
时,都会为其所有子元素打开一个新的position: absolute
堆栈。
您必须将z-index
的子元素移动到某些级别才能使它们独立,或者让#main-block
更高#main-block
,这也会导致重叠z-index
提示:也可以使用否定.screen
。并清理你的标记(关键字:单引号)。 ; - )