背景
曾经的我天真地以为只要元素设置了定位,再设置z-index
的话,z-index
便决定了它在z轴的层叠顺序。
然而,前不久,有同事在解决bug时讨论了一下这个问题,发现事情并不简单。它还跟元素的父元素有没有z-index
有关,也可以说是跟层叠上下文有关。
举个例子
1 |
|
第一步,我们把绿色的移到蓝色的位置
1 | .green { |
好,绿色方块覆盖了蓝色方块,正常操作。
我们分别给蓝色和绿色设z-index
1 | .blue { |
好,蓝色覆盖了绿色,现在还是正常操作。
现在我们分别给这两个div的父级div设置z-index。
1 | .red { |
这时你会发现,绿色重新覆盖了蓝色。而且即使我们把蓝色div的z-index
设置的特别大,绿色依然覆盖了蓝色。
然后我去网上查资料后才发现,z-index值只决定同一父元素中的同级子元素的堆叠顺序。
因此,我们设置z-index
时最好可以检查一下其父元素的z-index
的影响。必要时,需要项目负责人,提前设置好各功能模块之间的z-index
,这是最好不过了。
关于层叠上下文,有时间再说吧。