jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          CSS--Z-index屬性詳解

          Posted on 2010-07-19 14:59 幻海藍夢 閱讀(312) 評論(0)  編輯  收藏 所屬分類: JS 、CSS

          原文:http://www.csschina.net/a/jc/2010/0203/824.html

          大多數的CSS屬性都很容易使用。常常,當您對標記語言的元素使用CSS屬性時,產生的結果會隨著您刷新頁面而立即呈現。而另一些CSS屬性,卻會有一些復雜,且只能在給定的環境下才會工作。

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

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

          這是什么?

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

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

          自然的層疊順序

          在一個HTML頁面中,自然的層疊順序(也就是元素在Z軸上的順序)是由很多因素決定的。下面的是一個列表,它展示的列表項是處于一個層疊環境(stacking context,暫時未找到合適的漢語翻譯,應該是指層疊的元素所處的那個層疊的環境)中,這些項是處于這個層疊環境的底部的。這個列表中的項都沒有被賦予Z-index屬性。

          元素的背景和邊框會創建一個stacking context

          引用:
          具有負值的stacking contexts元素,按照出現的先后順序排列(越靠后層級越靠上)
          沒有被定位,沒有浮動的塊級元素,按照出現的先后順序排列
          沒有被定位,浮動的元素,按照出現的先后順序排列
          內聯元素,按照出現的先后順序排列排列
          被定位的元素,按照出現的先后順序排列

          Z-index 屬性,當被正確使用的時候,會改變自然的層疊順序。

          當然,除非元素已經被定位按照互相交疊的形式展現,否則元素的層疊順序并不會特別的明顯。下面的,負邊距的BOX被拿來展示,用以說明自然的層疊順序。

          上面的BOX被定義了不同的背景和邊框色,并且后兩個是交錯的并且定義了負值的頂部邊距,所以我們可以看到自然的層疊順序。灰色的BOX在標記中位于第一位,藍色的BOX位于第二位,金色的排在第三。應用的負邊距明確的表明這個事實:這些元素未被設置Z-index 屬性;它們的層疊順序是自然的,或者是默認的,復合規則的。產生交錯的現象都是因為負值的邊距。

          為什么它會產生混亂?

          即使Z-index并不是一個難以理解的屬性,但它卻會因錯誤的假設而使很多初級的開發人員陷入混亂。混亂發生的原因是因為Z-index只能工作在被明確定義了absolute,fixed或relative 這三個定位屬性的元素中。

          為了證明Z-index只能工作于被定位了的元素中,這里有同樣的三個BOX,它們應用了Z-index屬性來嘗試打破他們自然的層疊順序。

          灰色的BOX具有“9999”的Z-index值,藍色的BOX有“500”的Z-index值,金色的有“1”的Z-index值。合乎邏輯的,你會認為這三個BOX的層疊順序會倒過來。但事實卻不是這樣,因為這些元素都沒被設定position屬性。

          下面是同樣的三個BOX,分別都被設置了position: relative,他們的Z-index值還是按照上面那段設定。

          現在的結果是我們所期待的了:這些元素的層疊順序實現了反向;灰色的BOX覆蓋在藍色之上,藍色的覆蓋在金色之上。

          語法

          				
          1. #grey _box?{?? ?
          2. ???? width :? 200px ;?? ?
          3. ???? height :? 200px ;?? ?
          4. ???? border :? solid ? 1px ? #ccc ;?? ?
          5. ???? background :? #ddd ;?? ?
          6. ???? position :? relative ;?? ?
          7. ???? z-index :? 9999 ;?? ?
          8. }?? ?
          9. ?
          10. #blue _box?{?? ?
          11. ???? width :? 200px ;?? ?
          12. ???? height :? 200px ;?? ?
          13. ???? border :? solid ? 1px ? #4a7497 ;?? ?
          14. ???? background :? #8daac3 ;?? ?
          15. ???? position :? relative ;?? ?
          16. ???? z-index :? 500 ;?? ?
          17. }?? ?
          18. ?
          19. #gold _box?{?? ?
          20. ???? width :? 200px ;?? ?
          21. ???? height :? 200px ;?? ?
          22. ???? border :? solid ? 1px ? #8b6125 ;?? ?
          23. ???? background :? #ba945d ;?? ?
          24. ???? position :? relative ;?? ?
          25. ???? z-index :? 1 ;?? ?
          26. }?

          重復一下,Z-index屬性只能工作于那些被定義了position屬性的元素中。這并沒有被足夠的重視,尤其是對于那些新手。

          主站蜘蛛池模板: 宜阳县| 儋州市| 海口市| 防城港市| 通山县| 始兴县| 池州市| 南郑县| 兴和县| 如东县| 通山县| 定边县| 秦安县| 中卫市| 乌鲁木齐市| 辽阳县| 林口县| 手机| 水富县| 原阳县| 万安县| 彰化市| 徐闻县| 临泉县| 曲阳县| 施甸县| 上杭县| 和政县| 确山县| 岐山县| 介休市| 衡南县| 新竹县| 四平市| 驻马店市| 炉霍县| 福海县| 务川| 伊宁市| 南投市| 武清区|