z-index屬性在web開發中會常常使用,其主要的做用簡單的說就是把元素的position設置爲absolute、fixed以後,能夠調節元素在文檔上的層級關係。好比常常見到的dialog,mask的實現,dialog的z-index確定要設置的比mask大。寫這篇文章的目的主要是想記錄下遇到的有關z-index可設置的最大值的問題。下面先來看如下代碼運行的結果:javascript
css
這個demo的目的是查找z-index在各主流瀏覽器裏面能夠設置的臨界值(最大值),首先要說下爲何會有臨界值。在平時的開發過程當中曾經遇到過這樣的狀況,好比有A、B兩個元素,B元素要顯示到A元素上面,也就是說B元素的z-index要比A元素的大,這個時候若是A元素自己的z-index值也很大,而我想經過先獲取A元素的z-index以後經過parseInt方法把獲得到的z-index轉化成整數而後拿這個值+1,可是卻遇到了一個問題,經過parseInt轉化後獲得值很小,這究竟是怎麼回事呢?經過調試發現,是由於firefox把很大的z-index值經過科學計數法來表示了。這樣經過parseInt轉化後獲得很小的值也就很容易理解了,好比parseInt("1e+7", 10)獲得結果是1。html
給元素設置z-index有兩種方式,一種是經過樣式表給元素設置z-index,另一種是經過元素的style屬性設置,這個demo中提供了兩種方式設置以及兩種方式的獲取來檢測每種設置方法能夠設置的臨界值。java
結論:經過檢測發現ie6-9,chrome沒有本文討論的臨界值問題,只有firefox有這個問題,因此在使用z-index時候仍是要稍稍注意下的。前面說了設置&獲取z-index都有兩種方式,那麼兩種獲取方式是否有區別呢?通過測試發現確實有區別,若是經過window.getComputedStyle(elem, null).getPropertyValue('z-index')方式獲取,元素可設置的z-index臨界值是9999995。若是經過elem.style.zIndex方法獲取的話元素能夠設置的z-index臨界值是2147483647。web
這個demo中使用了kissy seed模塊,用到的是功能有獲取dom元素、獲取(設置)樣式表裏面的z-index屬性,style裏面的z-index屬性和獲取瀏覽器類型和版本號。固然這裏能夠用原生js或者jQuery框架來實現。kissy和jQuery的css方法內部實現原理同樣,主要是經過window.getComputedStyle(elem, null).getPropertyValue(prop)實現的,這種方法會優先獲取元素style裏面的z-index,若是style裏面沒有設置z-index則去獲取樣式表裏面對元素設置的z-index。chrome