例
設置圖像的 z-index:
img{position:absolute;left:0px;top:0px;z-index:-1;}
屬性定義及使用說明
z-index 屬性指定一個元素的堆疊順序。
擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面。
注意: z-index 進行定位元素(position:absolute, position:relative, or position:fixed)。
默認值: | auto |
---|---|
繼承: | no |
版本: | CSS2 |
JavaScript 語法: | object.style.zIndex="1" |
瀏覽器支持
表格中的數字表示支持該屬性的第一個瀏覽器版本號。
屬性 | |||||
---|---|---|---|---|---|
z-index | 1.0 | 4.0 | 3.0 | 1.0 | 4.0 |
屬性值
值 | 描述 |
---|---|
auto | 默認。堆疊順序與父元素相等。 |
number | 設置元素的堆疊順序。 |
inherit | 規定應該從父元素繼承 z-index 屬性的值。 |
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
、前言
網頁顯示實際上是三維的,我們直觀看到的有x軸和y軸,但在網頁布局上還有一個z軸,對于定位元素,我們使用top、right、left、bottom來實現元素在x-y平面上的定位,但為了表示布局的三維立體概念,還引入了z-index,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產生了重疊部分,顯示情況如下:
第二個div顯示在了第一個div上方,也就是重疊部分第二個div遮住了第一個div,現在給第一個div添加z-index屬性:
<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屬性設置為1
這時我們發現第一個div遮住了第二個div,下面我們將逐步介紹定位元素屬性z-index。
二、z-index只對定位元素奏效
定位元素(position 屬性值為 relative 或 absolute 或 fixed)可以理解為具有x、y、z坐標的元素。如果定位元素沒有顯示給出z-index屬性,那么它的z-index默認值為0,如果一個元素不是定位元素,那給它設置z-index屬性也是無效的。
例子來了
<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不起作用。
三、非定位元素與非定位元素,以及相同z-index的堆疊順序比較
如果兩個元素都為非定位元素,或者兩個定位元素的z-index值相等,那么按照文檔流的順序,后寫的元素將覆蓋先寫的元素。
兩個例子
1. 兩個都未設置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(背景為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)
四、定位元素與非定位元素的堆疊順序
如果定位元素未設置z-index或者z-index為正數,那么此類該定位元素的堆疊順序大于非定位元素;如果定位元素z-index為負數,那么此類定位元素堆疊順序小于非定位元素。
例如
第一個定位元素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為負數的定位元素
五、父子及兄弟的堆疊順序
1. 如果父元素設置了z-index且不是默認值auto,無論子元素的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的上方
2. 如果父元素未設置z-index或值為auto,那么當子元素z-index為負數時,父元素堆疊順序將大于子元素,否則子元素堆疊順序大于父元素
<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,可以看到子元素被父元素覆蓋了
3. 無論父元素的z-index如何,兄弟元素間的z-index值都可相互比較,z-index值越大堆疊順序越高
<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,所以第一個子元素覆蓋第二個子元素
3. 對于父元素及兄弟元素之外的其它元素,子元素的堆疊順序由其父元素的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。
六、最后
如有錯誤或不足之處還望指出探討,十分感謝!
者: IT共享者 來源: IT共享之家
div cssz-index層重疊順序
div層、span層等html標簽層重疊順序樣式z-index,平時CSS使用較少,但也會難免會碰到CSS z-index使用。
從基礎語法到應用案例教程講解學習z-index。
一、z-index語法與結構
z-index 跟具體數字
div{
z-index:100
}
注意:z-index的數值不跟單位。
z-index的數字越高越靠前,并且值必須為整數和正數(正數的整數)。
二、z-index使用條件
z-index在使用絕對定位 position:absolute屬性條件下使用才能使用。通常CSS讓不同的對象盒子以不同順序重疊排列,CSS就是要z-index樣式屬性。
三、案例
1. z-index重疊順序案例
為了方便觀察,設置3個DIV盒子,分別設置不同css背景顏色,設置相同CSS高度、CSS寬度。分別設置背景顏色)為黑色、紅色、藍色。CSS width為300px,css height為100px。
css代碼(沒加z-index屬性)
<style>
.div css5 {
position: relative;
}
.div css5-1,
.div css5-2,
.div css5-3 {
width: 300px;
height: 100px;
position: absolute;
}
.divcss5-1 {
background: #000;/* 黑色*/
left: 10px;
top: 10px
}
.divcss5-2 {
background: #F00;/* 紅色*/
left: 20px;
top: 20px
}
.divcss5-3 {
background: #00F;/* 藍色*/
left: 30px;
top: 30px
}
</style>
CSS代碼(加上z-index屬性后) :
<style>
.div css5 {
position: relative;
}
.div css5-1,
.div css5-2,
.div css5-3 {
width: 200px;
height: 100px;
position: absolute;
}
.div css5-1 {
z-index: 10;
background: #000;/* 黑色*/
left: 10px;
top: 10px
}
.div css5-2 {
z-index: 20;
background: #F00;/* 紅色*/
left: 20px;
top: 20px
}
.div css5-3 {
z-index: 15;
background: #00F;/* 藍色*/
left: 30px;
top: 30px
}
</style>
html代碼
<div class="divcss5-1"></div>
<div class="divcss5-2"></div>
<div class="divcss5-3"></div>
沒加的效果:
加上z-index屬性效果:
2. 案例說明
三個盒子均都使用了絕對定位屬性position樣式,并且設置相同的高度和寬度樣式。為了便于觀察CSS使用left、right屬性并賦予不同值,讓其錯落有致。
為可以看見第一個盒子z-index:10,所以重疊在最下層,而第二個盒子z-index:20,值最大所以最上層重疊,第三個盒子設置z-index:15,居中。
四、總結
本文基于CSS基礎,介紹了如何使用z-index重疊順序樣式,在實際DIV+CSS布局時候CSS需要絕對定位樣式,并且可以使用left、right進行定位,通過不同z-index值實現層重疊順序排列。代碼很簡單,希望能夠幫助你學習。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。