CSS好代码教程:网页布局定位及z-index解释

断断续续的烟雨给江南披上了一件白色的纱衣,这件飘若浮云,清净如水的嫁纱,迷蒙了往昔,模糊了过去。我开始在其中憧憬,永远的置身于这种氛围中,让世俗的纠缠远离。

声明
定位元素:
position属性值设置除默认值static以外的元素,包括relative,absolute,fixed。
平台:win/IE win/FF
z-index
用来确定定位元素在垂直于显示屏方向(以下称为Z轴)上的层叠顺序
值:auto | 整数 | inherit
默认:auto
适用于:定位元素
继承性:no
理解stacking context
每个box都归属于一个stacking context,它是元素在z轴方向上定位的参考。根元素形成 root stacking context,其他stacking context由定位元素设置z-index为非auto时产生。如#div1{position:relative;z-index:0;}即可使 id=div1的元素产生stacking context。stacking context和 containing block 并没有必然联系。
理解stack level
在一个stacking context中的每个box,都有一个stack level(即层叠级别,以下统一用stack level),它决定着在同一stacking context中每个box在z轴上的显示顺序。同一stacking context中,stack level值大的显示在上,stack level值小的显示在下,同一stack level的遵循后来居上的原则(back-to-front )。不同stacking context中,元素显示顺序以父级的stacking context的stack level来决定显示的先后情况。于自身stack level无关。注意stack level和z-index并不是统一概念。(将在后文慢慢理解)
stack level规则
每个stacking context中可包含块级(block)元素、内联(行内inline)元素,还有设置float属性的元素、定位元素等等他们在同一父级 stacking context中的显示顺序是怎样的?即stack level是怎样的呢?比如一个块级元素和内联元素发生层叠的话谁会在上面呢?是不是谁在后面谁就在上面呢?
根据w3c关于 stack level 的介绍可以得出以下stack level规则
每个stacking context都包括以下stack level (后来居上):
    父级stacking context的背景、边界 z-index值为负值的定位元素(值越小越在下) 文本流中非定位的、block块级子元素 文本流中非定位的、float浮动子元素 仿佛能产生stacking context的inline元素
    否则,inline元素的stack level将在block元素之前。 z-index:auto/0的定位元素 z-index值为正的定位元素(值越大越在上)

以上stack level在浏览器执行情况
firefox3.0下测试完全吻合,firefox2.0下稍有不同即:“z-index值为负值的定位元素”在“父级stacking context的背景、边界”之前。
ie6.0和7.0中:inline元素的stack level位于block元素之前,且“文本流中非定位的、float浮动子元素”(以下简称浮动元素)和“文本流中非定位的、block块级子元素”(以下简称block元素)处于同一级。
上一页12 3 下一页 阅读全文

本文CSS好代码教程:网页布局定位及z-index解释到此结束。灿烂的犹如初开的太阳的面纱,灵秀的犹如崖边的一只百合,热情的犹如一株红色的玫瑰,散发着撩人的芬芳,她让我如此深深着迷。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
css让页脚保持在底部位置的四种方案

Flex布局史上最简单使用语法教程

新的CSS 伪类函数 :is() 和 :where()示例详解

纯CSS打字动画的如何实现示例

CSS浮动引起的高度塌陷问题