網頁顯示其實是三維的,咱們直觀看到的有x軸和y軸,但在網頁佈局上還有一個z軸。html
對於定位元素,咱們使用top、right、left、bottom來實現元素在x-y平面上的定位,但爲了表示佈局的三維立體概念,還引入了z-index,z-index屬性用來設置元素的堆疊順序,擁有更高堆疊順序的元素老是會處於堆疊順序較低的元素的上方。佈局
<div style="width: 100px; height: 100px; background-color: red; position: relative;"></div> <div style="width: 100px; height: 100px; background-color: black; position: relative; top: -50px;"></div>
第二個div向上移動50px,與第一個div產生了重疊部分,顯示狀況以下:spa
第二個div顯示在了第一個div上方,也就是重疊部分第二個div遮住了第一個div,如今給第一個div添加z-index屬性:code
<div style="width: 100px; height: 100px; background-color: red; position: relative; z-index: 1;"></div> <div style="width: 100px; height: 100px; background-color: black; position: relative; top: -50px;"></div>
咱們將第一個div的z-index屬性設置爲1htm
這時咱們發現第一個div遮住了第二個div,下面咱們將逐步介紹定位元素屬性z-index。blog
<div style="width: 100px; height: 100px; background-color: red; z-index: 5;"></div> <div style="width: 100px; height: 100px; background-color: black; position: relative; top: -50px; z-index: 1;"></div>
第一個div的z-index設置爲5,第二個div的z-index設置爲1繼承
咱們看到第二個div覆蓋了第一個div,雖然第一個div的z-index屬性值更大,但它不是定位屬性,因此它的z-index不起做用。文檔
1. 兩個都未設置z-index的定位元素get
<div style="width: 100px; height: 100px; background-color: red; position: relative;"></div> <div style="width: 100px; height: 100px; background-color: black; position: relative; top: -50px;"></div>
後寫的這個div(背景爲black)覆蓋了先寫的div(背景爲red)博客
2. 兩個非定位元素
<div style="width: 100px; height: 100px; background-color: red;"></div> <div style="width: 100px; height: 100px; background-color: black; margin-top: -50px;"></div>
後寫的這個div(背景爲black)覆蓋了先寫的div(背景爲red)
第一個定位元素div的z-index爲正數,第二個爲非定位元素div,第一個定位元素div的z-index爲負數
<div style="width: 100px; height: 100px; background-color: green; position: relative; top: 50px; z-index: 1"></div> <div style="width: 100px; height: 100px; background-color: red;"></div> <div style="width: 100px; height: 100px; background-color: black; position: relative; top: -50px; z-index: -1;"></div>
z-index爲正數的定位元素覆蓋了非定位元素,非定位元素覆蓋了 z-index爲負數的定位元素
<div style="width: 200px; height: 200px; background-color: green; position: relative; top: 50px; z-index: 100"> <div style="width: 100px; height: 100px; background-color: blue; position: relative; z-index: -10;"></div> </div>
雖然子div的z-index值小於其父div,但子div仍顯示在了父div的上方
<div style="width: 200px; height: 200px; background-color: green; position: relative; top: 50px;"> <div style="width: 100px; height: 100px; background-color: blue; position: relative; z-index: -1;"></div> </div>
父元素未設置z-index,子元素z-index爲-1,能夠看到子元素被父元素覆蓋了
<div style="width: 200px; height: 200px; background-color: green; position: relative; top: 50px;"> <div style="width: 100px; height: 100px; background-color: red; position: relative; z-index: 2;"></div> <div style="width: 100px; height: 100px; background-color: black; position: relative; z-index: 1; top: -50px;"></div> </div>
第一個子元素的z-index大於第二個子元素的z-index,因此第一個子元素覆蓋第二個子元素
<div style="position: relative; z-index: 10;"> <div style="width: 100px; height: 100px; background-color: red; position: relative; z-index: 2;"></div> </div> <div style="position: relative; z-index: 5;"> <div style="width: 100px; height: 100px; background-color: black; position: relative; z-index: 3; top: -50px;"></div> </div>
儘管背景爲紅色的子div元素z-index小於背景爲黑色的子div元素,但紅色仍覆蓋了黑色,就是由於紅色div的父元素z-index大於黑色div的父元素
因此不管黑色子div的z-index多大,它的堆疊順序始終小於紅色div
感謝博主謙行的博客:z-index應用簡單總結。
若有錯誤或不足之處還望指出探討,十分感謝!