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