z-index无效三种情况
- 父标签 position 属性为 relative;
- 问题标签无 position 属性(不包括 static);
- 问题标签含有浮动( float )属性。
- position:relative 改为 position:absolute;
- 浮动元素添加 position 属性(如 relative,absolute 等);
- 去除浮动。
z-index的叠加法则
父亲和父亲比较,孩子和孩子(兄弟之间)比较,如果比较的z-index相同,则后来者居上。且子凭父贵,父亲牛逼了儿子会更加牛逼!
参考来自z-index百度百科,并实际验证-------------------------
每一个定位元素都归属于一个stacking context。根元素形成root stacking context,而其他的stacking context则由定位元素产生(此定位元素的z-index被定义一个非auto的z-index值),定位子元素会以这个local stacking context为参考,用相同的规则来决定层叠顺序。并且stacking context和 containing block 之间并没有必然联系。
当stacking context一样的时候,就用z-index的值来决定怎样显示,如果z-index也相同(即stack level相同),则按照档中后来者居上的原则(back-to-front )的顺序来层叠。
当任何一个元素层叠另一个包含在不同stacking context元素时,则会以stacking context的层叠级别(stack level)来决定显示的先后情况。也就是说,在相同的stacking context下才会用z-index来决定先后,不同时则由stacking context的z-index来决定。例如:
定位元素A(z-index:100)里面有定位元素A1(z-index:300),而定位元素B和元素A兄弟关系(z-index:200)。你会发现无论A1的z-index是多大,也会被z-index是200的B所覆盖,因为A的z-index只有100。