欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CSS教程 徹底掌握Z-index屬性

  發(fā)布時(shí)間:2014-11-04 20:38:31   作者:佚名   我要評(píng)論
在這篇文章里,我們會(huì)準(zhǔn)確的說明究竟什么是Z-index,它為什么會(huì)這么不為人所了解,并一起討論一些關(guān)于它的實(shí)際使用中的問題

大多數(shù)的CSS屬性都很容易使用。常常,當(dāng)您對(duì)標(biāo)記語言的元素使用CSS屬性時(shí),產(chǎn)生的結(jié)果會(huì)隨著您刷新頁(yè)面而立即呈現(xiàn)。而另一些CSS屬性,卻會(huì)有一些復(fù)雜,且只能在給定的環(huán)境下才會(huì)工作。

Z-index屬性便屬于上面所說的后面的那一組。Z-index無疑的比其他任何屬性都會(huì)頻繁的導(dǎo)致(兼容性)上的混亂和(開發(fā)者心理上)的挫敗感。但滑稽的是,一旦你真正理解了Z-index,你會(huì)發(fā)現(xiàn)它卻是一個(gè)非常容易使用的屬性,并且會(huì)為解決很多l(xiāng)ayout方面的挑戰(zhàn)提供強(qiáng)有力的幫助。

在這篇文章里,我們會(huì)準(zhǔn)確的說明究竟什么是Z-index,它為什么會(huì)這么不為人所了解,并一起討論一些關(guān)于它的實(shí)際使用中的問題。我們同時(shí)會(huì)描述一些會(huì)遇到的瀏覽器間的差異,那些存在于已有版本的IE及Firefox瀏覽器中的獨(dú)特問題。這篇關(guān)于Z-index屬性的全透視文章將會(huì)為那些有著良好基礎(chǔ)的開發(fā)者在使用Z-index屬性時(shí)提供強(qiáng)大的自信心及強(qiáng)有力的幫助。

w3school介紹 CSS z-index 屬性

這是什么?

Z-index屬性決定了一個(gè)HTML元素的層疊級(jí)別。元素層疊級(jí)別是相對(duì)于元素在Z軸上(與X軸Y軸相對(duì)照)的位置而言。一個(gè)更高的Z-index值意味著這個(gè)元素在疊層順序中會(huì)更靠近頂部。這個(gè)層疊順序沿著垂直的線軸被呈現(xiàn)。

為了更清晰的描述Z-index是如何工作的,上面的這張圖片夸大展示了層疊元素在視覺位置上的關(guān)系。

自然的層疊順序
在一個(gè)HTML頁(yè)面中,自然的層疊順序(也就是元素在Z軸上的順序)是由很多因素決定的。下面的是一個(gè)列表,它展示的列表項(xiàng)是處于一個(gè)層疊環(huán)境(stacking context,暫時(shí)未找到合適的漢語翻譯,應(yīng)該是指層疊的元素所處的那個(gè)層疊的環(huán)境)中,這些項(xiàng)是處于這個(gè)層疊環(huán)境的底部的。這個(gè)列表中的項(xiàng)都沒有被賦予Z-index屬性。
元素的背景和邊框會(huì)創(chuàng)建一個(gè)stacking context
引用:
·具有負(fù)值的stacking contexts元素,按照出現(xiàn)的先后順序排列(越靠后層級(jí)越靠上)
·沒有被定位,沒有浮動(dòng)的塊級(jí)元素,按照出現(xiàn)的先后順序排列
·沒有被定位,浮動(dòng)的元素,按照出現(xiàn)的先后順序排列
·內(nèi)聯(lián)元素,按照出現(xiàn)的先后順序排列排列
·被定位的元素,按照出現(xiàn)的先后順序排列
Z-index 屬性,當(dāng)被正確使用的時(shí)候,會(huì)改變自然的層疊順序。
當(dāng)然,除非元素已經(jīng)被定位按照互相交疊的形式展現(xiàn),否則元素的層疊順序并不會(huì)特別的明顯。下面的,負(fù)邊距的BOX被拿來展示,用以說明自然的層疊順序。

上面的BOX被定義了不同的背景和邊框色,并且后兩個(gè)是交錯(cuò)的并且定義了負(fù)值的頂部邊距,所以我們可以看到自然的層疊順序?;疑腂OX在標(biāo)記中位于第一位,藍(lán)色的BOX位于第二位,金色的排在第三。應(yīng)用的負(fù)邊距明確的表明這個(gè)事實(shí):這些元素未被設(shè)置Z-index 屬性;它們的層疊順序是自然的,或者是默認(rèn)的,復(fù)合規(guī)則的。產(chǎn)生交錯(cuò)的現(xiàn)象都是因?yàn)樨?fù)值的邊距。
 
為什么它會(huì)產(chǎn)生混亂?
即使Z-index并不是一個(gè)難以理解的屬性,但它卻會(huì)因錯(cuò)誤的假設(shè)而使很多初級(jí)的開發(fā)人員陷入混亂?;靵y發(fā)生的原因是因?yàn)閆-index只能工作在被明確定義了absolute,fixed或relative 這三個(gè)定位屬性的元素中。
為了證明Z-index只能工作于被定位了的元素中,這里有同樣的三個(gè)BOX,它們應(yīng)用了Z-index屬性來嘗試打破他們自然的層疊順序。

灰色的BOX具有“9999”的Z-index值,藍(lán)色的BOX有“500”的Z-index值,金色的有“1”的Z-index值。合乎邏輯的,你會(huì)認(rèn)為這三個(gè)BOX的層疊順序會(huì)倒過來。但事實(shí)卻不是這樣,因?yàn)檫@些元素都沒被設(shè)定position屬性。
下面是同樣的三個(gè)BOX,分別都被設(shè)置了position: relative,他們的Z-index值還是按照上面那段設(shè)定。

現(xiàn)在的結(jié)果是我們所期待的了:這些元素的層疊順序?qū)崿F(xiàn)了反向;灰色的BOX覆蓋在藍(lán)色之上,藍(lán)色的覆蓋在金色之上。
語法

#grey_box { 
    width: 200px; 
    height: 200px; 
    border: solid 1px #ccc; 
    background: #ddd; 
    position: relative; 
    z-index: 9999; 

#blue_box { 
    width: 200px; 
    height: 200px; 
    border: solid 1px #4a7497; 
    background: #8daac3; 
    position: relative; 
    z-index: 500; 

#gold_box { 
    width: 200px; 
    height: 200px; 
    border: solid 1px #8b6125; 
    background: #ba945d; 
    position: relative; 
    z-index: 1; 
}
 
重復(fù)一下,Z-index屬性只能工作于那些被定義了position屬性的元素中。這并沒有被足夠的重視,尤其是對(duì)于那些新手。
 
運(yùn)用JavaScript
如果你希望通過JavaScript為一個(gè)元素動(dòng)態(tài)的加上Z-index 屬性,其語法同其他大部分CSS元素能被存取類似,就是使用“駝峰命名法”取代CSS屬性中的連字符,就像下面的代碼展現(xiàn)的那樣。
var myElement = document.getElementById(”gold_box”); 
myElement.style.position = “relative”; 
myElement.style.zIndex = “9999″;
在IE 和 Firefox中的不當(dāng)解析(兼容性問題)
在某些特定的情況下,關(guān)于Z-index 屬性的解析會(huì)在IE6、IE7以及Firefox2版本中存在一些小小的前后矛盾。
IE中的<select>元素:
IE6中的<select>元素是一個(gè)窗口控件,所以它總是出現(xiàn)在層疊順序的頂部而不會(huì)顧及到自然層疊順序、position屬性或者是Z-index。下圖展示的就是這個(gè)問題。

<select>元素出現(xiàn)在了頂部,它被設(shè)置了“相對(duì)定位”并且Z-index值為“1”。金色的BOX在這個(gè)層疊順序中排在了第二位,它的Z-index值是“9999”。因?yàn)樽匀粚盈B順序及Z-index值的原因,在我們目前所用的所有瀏覽器中金色的BOX都會(huì)排在頂部,但I(xiàn)E6除外。

這個(gè)IE6的BUG導(dǎo)致了很多覆蓋在<select>元素上的下拉菜單在彈出下拉選項(xiàng)時(shí)失敗的問題。一個(gè)解決辦法是使用JavaScript臨時(shí)隱藏<select>元素,等到下拉菜單的下拉項(xiàng)收回時(shí)再將<select>顯示出來。其他的辦法會(huì)涉及到使用<iframe>。
IE6/IE7中被定位了的父容器:
因父容器(元素)被定位的緣故,IE6/7會(huì)錯(cuò)誤的對(duì)其stacking context進(jìn)行重置。為了演示這個(gè)多少有些復(fù)雜的BUG,我們?cè)僖淮蔚姆胖脙蓚€(gè)BOX,但這次我們會(huì)將第一個(gè)BOX放置在一個(gè)被定位了的元素里。

灰色BOX的z-index值是“9999”;藍(lán)色BOX的z-index值是“1”,這兩個(gè)BOX都被設(shè)置了position。所以,正確的執(zhí)行應(yīng)該是灰色的BOX覆蓋在藍(lán)色的之上。
但是在IE6和IE7中,我們卻會(huì)看到藍(lán)色的BOX處于灰色的之上。這是由灰色BOX外層的父容器也被設(shè)置了定位造成的。這兩款瀏覽器錯(cuò)誤的將被定位的父容器的stacking context進(jìn)行了“重置”,但卻不應(yīng)該這樣?;疑腂OX擁有一個(gè)非常高的Z-index值,它理應(yīng)因?yàn)樘幵谒{(lán)色BOX之上。其他的瀏覽器對(duì)這個(gè)問題會(huì)進(jìn)行正確的解析。
 
Firefox 2中的負(fù)值:
在Firefox2版本中,一個(gè)負(fù)的Z-index值會(huì)使元素位于stacking context的后面,而不是位于公認(rèn)的背景和邊框這樣的元素stacking context之前。下面的截圖展示了這個(gè)Firefox 2的BUG。

下面的是上面截圖的HTML版本(限于目前博客所限,做不到能夠像Smashing Magazine那樣的內(nèi)容部分顯示code demo,需要查看原始實(shí)例請(qǐng)去原文章查看) ,如果你在Firefox 3或者其他目前正在被使用的瀏覽器中查看,你會(huì)看到正常的解析結(jié)果:灰色BOX的背景(元素stacking context的基底)出現(xiàn)在所有實(shí)物的下面,并且灰色BOX內(nèi)部的文字出現(xiàn)在藍(lán)色BOX的上面。

普遍應(yīng)用的展示
對(duì)頁(yè)面中的元素應(yīng)用z-index屬性可以非常便捷的解決各種各樣的layout挑戰(zhàn),同時(shí)使得設(shè)計(jì)者可以在他們的設(shè)計(jì)中使用層疊的項(xiàng)目進(jìn)行更多的創(chuàng)造。
交錯(cuò)的滑動(dòng)門菜單:
一個(gè)對(duì)這個(gè)CSS屬性實(shí)際應(yīng)用的案例:CTCOnlineCME 這個(gè)網(wǎng)站對(duì)“正被點(diǎn)擊”的tab使用Z-index屬性及清晰交錯(cuò)的PNG圖片,創(chuàng)造出非常好的效果。

CSS 氣泡:
Z-index 屬性還可以用來實(shí)現(xiàn)基于CSS的提示氣泡,就像下面trentrichardson.com展示的那樣

Light Box:
如果不是因?yàn)閼?yīng)用了z-index 屬性,現(xiàn)在也不會(huì)有那么多的品質(zhì)優(yōu)秀的Light Box腳本可以免費(fèi)使用,比如說JQuery的一個(gè)插件FancyBox。

Light box 腳本使用半透明的PNG圖片來使背景變暗,之后拿來一個(gè)新的元素,經(jīng)常會(huì)使用類似窗口的DIV,將之放置在前排。覆蓋住屏幕的PNG和之后的DIV都使用Z-index 屬性以確保這2個(gè)元素會(huì)位于頁(yè)面其他元素之上。
下拉菜單:
類似于Brainjar’s classic Revenge of the Menu Bar的下拉菜單使用Z-index以確保菜單的按鈕和他們的下拉項(xiàng)位于層疊的頂部。

畫廊效果的圖片展示:
將JQuery animation和Z-index組合可以創(chuàng)造出幻燈片或畫廊式的卓越效果。usejquery.com 網(wǎng)站中的這個(gè)demo向我們展示了這兩者的絕妙組合帶給我們的驚喜。

Polaroid Photo Gallery by Chris Spooner 采用功能更為強(qiáng)大的CSS3同Z-index配合,創(chuàng)造出了一個(gè)當(dāng)鼠標(biāo)劃過時(shí)會(huì)重新碼放的超cool效果。

在Fancy Thumbnail Hover Effect 中Soh Tanaka 使用Query為基礎(chǔ)的腳本改變z-index的賦值。

 

Stu Nicholls所做的CSS實(shí)驗(yàn):
Stu Nicholls在他的網(wǎng)站 CSSplay 中闡釋了眾多的CSS的案例。下面是一些關(guān)于z-index屬性的作品。
CSS 圖片地圖

CSS 游戲

CSS模仿框架

增強(qiáng)版的層疊布局:
24 ways 這個(gè)網(wǎng)站以Z-index為工具來提升它的模板體驗(yàn),將年份和日期的長(zhǎng)度、寬度延伸到和網(wǎng)站外層容器同等并相互交織,創(chuàng)造出了一個(gè)非常有趣的效果。

奇異的網(wǎng)摘欄:
Janko At Warp Speed 這個(gè)網(wǎng)站在“奇異的網(wǎng)摘欄”中使用了Z-index。

完美的整頁(yè)背景圖:
Chris Coyier 闡述了這個(gè)技術(shù)并將之應(yīng)用到了ringvemedia.com 網(wǎng)站上。在內(nèi)容容器上應(yīng)用 z-index 以確保它出現(xiàn)在那個(gè)看上去像“背景”其實(shí)卻不是的圖片上。

總結(jié)

在CSS中層疊關(guān)系是一個(gè)復(fù)雜的話題。本文并不打算針對(duì)這個(gè)話題的所有細(xì)節(jié)進(jìn)行討論,而是針對(duì)Z-index究竟是如何影響我們網(wǎng)頁(yè)的層疊順序進(jìn)行一次深入的探討。這里所說的,當(dāng)被真正的全面理解后,我們會(huì)發(fā)現(xiàn)這個(gè)CSS屬性是如此的強(qiáng)大。
初學(xué)者現(xiàn)在應(yīng)該會(huì)對(duì)這個(gè)屬性有了非常好的理解,并且會(huì)避免很多在對(duì)其的使用過程中經(jīng)常出現(xiàn)的問題。另外,有基礎(chǔ)的開發(fā)者也會(huì)對(duì)如何正確使用Z-index來避免很多布局方面的問題有了更為深入的理解,并且為創(chuàng)造出更多的CSS藝術(shù)作品打開了大門。

相關(guān)文章

  • 深入理解css中position屬性及z-index屬性(推薦)

    這篇文章主要介紹了深入理解css中position屬性及z-index屬性(推薦),想要學(xué)習(xí)了解CSS樣式的同學(xué),可以了解一下。希望對(duì)大家的學(xué)習(xí)有所幫助。
    2016-11-29
  • CSS中的z-index屬性基本使用教程

    這篇文章主要介紹了CSS中的z-index屬性基本使用教程,z-index主要用來控制層疊級(jí)別,注意IE瀏覽器下的效果可能會(huì)有點(diǎn)特殊...需要的朋友可以參考下
    2016-03-05
  • 深入解析CSS中z-index屬性對(duì)層疊順序的處理

    這篇文章主要介紹了CSS中z-index屬性對(duì)層疊順序的處理,分情況講解了各種曾跌情況下哪個(gè)box更靠近用戶,需要的朋友可以參考下
    2016-03-05
  • CSS屬性探秘系列(七):z-index

    在這篇文章里,我們會(huì)準(zhǔn)確的說明究竟什么是Z-index,它為什么會(huì)這么不為人所了解,并一起討論一些關(guān)于它的實(shí)際使用中的問題。我們同時(shí)會(huì)描述一些會(huì)遇到的瀏覽器間的差異,
    2014-10-22
  • CSS 中的 z-index 屬性實(shí)例詳解

    z-index屬性是用來設(shè)置元素的堆疊順序或者叫做元素層級(jí),z-index的值越大,元素的層級(jí)越高,本文給大家講解CSS 中的 z-index 屬性實(shí)例代碼,感興趣的朋友跟隨小編一起看看
    2023-05-29

最新評(píng)論