因为HTML元素显示在显示器上都是一个二维平面,只拥有x和y轴的属性,为了让元素显示有一些层级关系的效果,所以引入了z-index属性来表示三维立体空间的z轴方面,这样显示出来的界面就有了三维立体的上下关系的效果。z-index的属性值有三种可能:
注释:
概念:
z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。z-index 仅能在定位元素上奏效(position属性值为 relative 或 absolute 或 fixed的对象)
演示:
<div style="width:100px;height:100px;background-color:red;"></div> <div style="width:50px;height:50px;background-color:blue;position:relative;top:-50px;"></div>
<div style="width:100px;height:100px;background-color:red;position:relative;top:20px;"></div> <div style="width:50px;height:50px;background-color:blue;"></div>
<div style="width:100px;height:100px;background-color:red;"></div> <div style="width:50px;height:50px;background-color:blue;position:relative;top:-25px;z-index:-5;"></div>
<div style="width:100px;height:100px;background-color:red;z-index:30;"></div> <div style="width:50px;height:50px;background-color:blue;position:relative;top:-50px;z-index:25;"></div>
z-index属性适用于定位元素(position属性值为 relative 或 absolute 或 fixed的对象),用来确定定位元素在垂直于显示屏方向(称为Z轴)上的层叠顺序,也就是说如果元素没有定位,对其设置的z-index是无效的。虽然红色div的z-index比蓝色div的大,但是由于红色div未定位,其z-index属性未起作用,所以仍然会被蓝色div覆盖。
相同z-index:
<div style="width:100px;height:100px;background-color:red;position:relative;z-index:1;"></div> <div style="width:50px;height:50px;background-color:blue;position:relative;top:-50px;z-index:1;"></div>
<div style="width:100px;height:100px;background-color:red;position:relative;top:10px;"></div> <div style="width:50px;height:50px;background-color:blue;"></div>
父子z-index关系处理:
<div style="width:100px;height:100px;background-color:red;position:relative;z-index:10;"> <div style="width:50px;height:50px;background-color:blue;position:relative;z-index:-5;"></div> </div>
<div style="width:100px;height:100px;background-color:red;position:relative;"> <div style="width:50px;height:50px;background-color:blue;position:relative;z-index:-5;"></div><!--z-index为-5所以在父元素的后面> </div>
兄弟子元素z-index关系处理:
<div style="width:100px;height:100px;background-color:red;position:relative;z-index:5;"> <div style="width:50px;height:250px;background-color:blue;position:relative;z-index:50;"></div> </div> <div style="width:100px;height:100px;background-color:yellow;margin-top:-40px;position:relative;z-index:10;"> <div style="width:30px;height:150px;background-color:black;position:relative;z-index:-10;"></div> </div>
虽然第一个div的子元素的z-index比较高,但是由于其父元素z-index比第二个平级div低,所以第一个div子元素会被第二个父辈div及其子元素覆盖。
父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,在父元素上方。
总结:
原文:https://www.cnblogs.com/xiaoneng/p/10571450.html