小編給大家分享一下css中的z-index是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
z-index 屬性設(shè)置元素的堆疊順序。擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面。
層級關(guān)系的比較
1. 對于同級元素,默認(rèn)(或position:static)情況下文檔流后面的元素會覆蓋前面的。
2. 對于同級元素,position不為static且z-index存在的情況下z-index大的元素會覆蓋z-index小的元素,即z-index越大優(yōu)先級越高。
3. IE6/7下position不為static,且z-index不存在時z-index為0,除此之外的瀏覽器z-index為auto。
4. z-index為auto的元素不參與層級關(guān)系的比較,由向上遍歷至此且z-index不為auto的元素來參與比較。
順序規(guī)則
如果不對節(jié)點(diǎn)設(shè)定 position 屬性,位于文檔流后面的節(jié)點(diǎn)會遮蓋前面的節(jié)點(diǎn)。
<div id="a">A</div> <div id="b">B</div>
定位規(guī)則
如果將 position 設(shè)為 static,位于文檔流后面的節(jié)點(diǎn)依然會遮蓋前面的節(jié)點(diǎn)浮動,,所以 position:static 不會影響節(jié)點(diǎn)的遮蓋關(guān)系。
<div id="a" style="position:static;">A</div> <div id="b">B</div>
如果將 position 設(shè)為 relative (相對定位),absolute (絕對定位) 或者 fixed (固定定位),這樣的節(jié)點(diǎn)會覆蓋沒有設(shè)置 position 屬性或者屬性值為 static 的節(jié)點(diǎn),說明前者比后者的默認(rèn)層級高。
<div id="a" style="position:relative;">A</div> <div id="b">B</div>
在沒有 z-index 屬性干擾的情況下, 根據(jù)這順序規(guī)則和定位規(guī)則, 我們可以做出更加復(fù)雜的結(jié)構(gòu). 這里我們對 A 和 B 都不設(shè)定 position, 但對 A 的子節(jié)點(diǎn) A-1 設(shè)定 position:relative. 根據(jù)順序規(guī)則, B 會覆蓋 A, 又根據(jù)定位規(guī)則 A' 會覆蓋 B.
<div id="a"> <div id="a-1" style="position:relative;">A-1</div> </div> <div id="b">B</div>
上面互相覆蓋在什么時候用到這樣的實(shí)現(xiàn)? 看起來偏門, 其實(shí)很常用, 比如說, 電子商務(wù)網(wǎng)站側(cè)欄的類目展示列表就可以用這個技巧來實(shí)現(xiàn).
下圖是某網(wǎng)站的類目展示區(qū)域, 二級類目的懸浮層覆蓋一級類目列表外框, 而一級類目的節(jié)點(diǎn)覆蓋二級類目的懸浮層. 如果使用 CSS 實(shí)現(xiàn)展示效果, 一級類目的外框相當(dāng)于上面例子中的 A, 一級類目的節(jié)點(diǎn)相當(dāng)于 A-1, 二級類目的懸浮層相當(dāng)于 B.
參與規(guī)則
我們嘗試不用 position 屬性, 但為節(jié)點(diǎn)加上 z-index 屬性. 發(fā)現(xiàn) z-index 對節(jié)點(diǎn)沒起作用. z-index 屬性僅在節(jié)點(diǎn)的 position 屬性為 relative, absolute 或者 fixed 時生效.
<div id="a" style="z-index:2;">A</div> <div id="b" style="z-index:1;">B</div> <div id="c" style="z-index:0;">C</div>
<div id="a" style="z-index:2;">A</div> <div id="b" style="position:relative;z-index:1;">B</div> <div id="c" style="position:relative;z-index:0;">C</div>
默認(rèn)值規(guī)則
如果所有節(jié)點(diǎn)都定義了 position:relative. z-index 為 0 的節(jié)點(diǎn)與沒有定義 z-index 在同一層級內(nèi)沒有高低之分; 但 z-index 大于等于 1 的節(jié)點(diǎn)會遮蓋沒有定義 z-index 的節(jié)點(diǎn); z-index 的值為負(fù)數(shù)的節(jié)點(diǎn)將被沒有定義 z-index 的節(jié)點(diǎn)覆蓋.
<div id="a" style="position:relative;z-index:1;">A</div> <div id="b" style="position:relative;z-index:0;">B</div> <div id="c" style="position:relative;">C</div> <div id="d" style="position:relative;z-index:0;">D</div>
從父規(guī)則
如果 A, B 節(jié)點(diǎn)都定義了 position:relative, A 節(jié)點(diǎn)的 z-index 比 B 節(jié)點(diǎn)大, 那么 A 的子節(jié)點(diǎn)必定覆蓋在 B 的子節(jié)點(diǎn)前面.
<div id="a" style="position:relative;z-index:1;"> <div id="a-1">A-1</div> </div> <div id="b" style="position:relative;z-index:0;"> <div id="b-1">B-1</div> </div>
如果所有節(jié)點(diǎn)都定義了 position:relative, A 節(jié)點(diǎn)的 z-index 和 B 節(jié)點(diǎn)一樣大, 但因為順序規(guī)則, B 節(jié)點(diǎn)覆蓋在 A 節(jié)點(diǎn)前面. 就算 A 的子節(jié)點(diǎn) z-index 值比 B 的子節(jié)點(diǎn)大, B 的子節(jié)點(diǎn)還是會覆蓋在 A 的子節(jié)點(diǎn)前面.
很多人將 z-index 設(shè)得很大, 9999 什么的都出來了, 如果不考慮父節(jié)點(diǎn)的影響, 設(shè)得再大也沒用, 那是無法逾越的層級.
以上是css中的z-index是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享題目:css中的z-index是什么-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://jinyejixie.com/article10/dphddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、App開發(fā)、品牌網(wǎng)站建設(shè)、搜索引擎優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容