我有一个关于z-index属性的奇怪行为的问题。在术语或层的情况如下:避免z-index相对于父元素工作
div#wrapper
div#sidebar (fixed position and 5 as z-index)
div#pop-up (absolute position and 15 as z-index)
div#black-layer (fixed position and 10 as z-index)
的事情,然后是我想拥有了一切半透明黑色层,下一个例外:在这我想其他的任意格(视案子)。有点像典型的灯箱。
现在发生的事情是,弹出框应该位于黑色层之上,因为它们的z-索引更高,实际上是在它之下。
我在几次尝试之后得出的结论是,这种情况发生的原因是因为#弹出窗口是#sidebar的子窗口。事实上,如果我把它放在外面,它就像我假装一样。像:
div#wrapper
div#sidebar
div#pop-up
div#black-layer
但是,这不是一个好的解决方案。首先,因为从HTML的角度来看,它在语义上是不正确的。另外,因为我有必要在代码的其他部分添加更多的“弹出窗口”,并且不是一个好主意,因此通过分开保存所有这些方法来分割逻辑。
谢谢你的优势。
更新:现在更奇怪了。我没有改变任何东西,只是在Firefox而不是Chrome上进行测试,并且按照我的预期在那里工作,所以弹出窗口实际上是在黑色层。而且在Opera中。在傲游中不起作用。就像一个笔记,我正在使用Linux。
通常处理的方式是,当显示弹出窗口时,它的内容从它所在的位置移动(或复制)到(通常是一个)“body”元素驻留容器,该容器用于创建覆盖。内容的“语义”与标记有关,而不是内容的DOM表示。所以你没有通过这样做打破任何语义规则。 – 2014-10-11 13:16:25
请参阅:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context♦http://www.w3.org/TR/CSS21/zindex.html – 2014-10-11 13:40:37
我不同意你,杰瑞德。语义也与HTML元素的父子关系有关。例如,有一个标签是不正确的,但将主要内容放置在它外面。关于复制的想法,如果我不关心弹出窗口的位置(如果它是固定的并且与屏幕相关的),那么可以,但是如果你想要的话,我不认为这是一个解决方案以保持元素相对于其父元素的位置(我希望弹出元素位于侧边栏的底部)。 –
DanielM
2014-10-11 14:54:56