z-index 的用法

z-index属性简介

引用:

z-index : auto | number

auto:默认值。
number:无单位的整数值,可为负数。

z-index 值较大的元素将叠加在z-index值较小的元素之上。对于未指定此属性的定位对象,z-index 值为正数的对象会在其之上,而z-index 值为负数的对象在其之下。

注意:这个属性不会作用于窗口控件,如selct 对象。在IE 5.5+中,iframe 对象开始支持此属性。而在之前的浏览器版本中,iframe 对象是窗口控件,会忽略此属性。

z-index属性适用于定位元素(position 属性值为 relative 或 absolute 或 fixed的对象),用来确定定位元素在垂直于显示屏方向(称为Z轴)上的层叠顺序(stack order)。

每一个定位元素都归属于一个stacking context。根元素形成root stacking context,而其他的stacking context则由定位元素产生(此定位元素的z-index被定义一个非auto的z-index值),定位子元素会以这个local stacking context为参考,用相同的规则来决定层叠顺序。并且stacking context和 containing block 之间并没有必然联系。

当stacking context一样的时候,就用z-index的值来决定怎样显示,如果z-index也相同(即stack level相同),则按照档中后来者居上的原则(back-to-front )的顺序来层叠。

当任何一个元素层叠另一个包含在不同stacking context元素时,则会以stacking context的层叠级别(stack level)来决定显示的先后情况。也就是说,在相同的stacking context下才会用z-index来决定先后,不同时则由stacking context的z-index来决定。例如:

定位元素A(z-index:100)里面有定位元素A1(z-index:300),而定位元素B和元素A兄弟关系(z-index:200)。你会发现无论A1的z-index是多大,也会被z-index是200的B所覆盖,因为A的z-index只有100。

阅读更详细的内容:http://www.w3.org/TR/CSS21/visuren.html#z-index


问题:什么时候形成一个stacking context?

按照CSS 2.1的标准,只有在定位元素显式确定z-index的值,即非auto的时候,才形成一个stacking context。高级浏览器都是按照这个来实现的,但是像ie6浏览器,可不是这样实现的。在ie6中,只要是定位元素,就形成一个独立的stacking context。

问题:z-index 元素按照什么原则来排列?

1 同一个层叠上下文中,层叠级别大的显示在上,层叠级别小的显示在下,相同层叠级别时,遵循后来居上的原则(back-to-font);

2 在相同的 stacking context 下才会用元素本身的 z-index 来决定先后,不同时则由 stacking context 的父元素的 z-index 来决定。

    

                                                
因为e1、e2 z-index 相同,则两个元素按照后来居上的原则排列,从而决定了即使e1里面的div z-index 比e2 里面的div 的z-index 大,但是也没有显示。


问题:


stacking contexting 与div的层级没有关系,只看定位原始出现的层级关于有关。例子中grandsonPart将在secondPart的上面


参考:http://www.cnblogs.com/Darren_code/archive/2012/03/05/z-index.html

      

转自:http://www.blueidea.com/tech/web/2007/4668.asp

你可能感兴趣的:(CSS)