当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS教程:定位属性在元素中的层级关系

CSS样式表
base href 使用方法详解
html label标签的使用教程
使用CSS不用程序实现文字自动截断 用省略号代替
CSS hack实现 CSS完美兼容IE6/IE7/FF的通用方法
网页布局+纯CSS纵向下拉菜单 IE6/IE7兼容
CSS图片拼合生成器只需上传zip包即可
用iframe margin实现调用其他网页的某一区域的方法
用css alpha 滤镜 实现input file 样式美化代码
RGB 加成色 说明
为了防止乱码,请将用于页面编码的meta charset放到title的前面
DIV+CSS布局中不推荐使用的标签集合Dont Use These Tags
大家看了就明白了css样式中类class与标识id选择符的区别小结
DL.DT.DD实现左右的布局简单例子
css布局网页水平居中常用方法
使用CSS框架布局的缺点和优点小结
Web2.0下XHTML+CSS 设计需要注意的地方小结
table高级应用把表格进行到底(必看)
css强制换行 css强制不换行的css方法
Div CSS absolute与relative的区别小结
css实现文字垂直居中的代码

CSS样式表 中的 CSS教程:定位属性在元素中的层级关系


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-03   浏览: 210 ::
收藏到网摘: n/a

在现在项目产品的前端开发中随着交互的增多,再加上html结构的语义化要求,元素的层级关系越发重要了,经常页面会出现页面某些元素会被其他元素遮盖,很多时候我们通过position:relative或position:absolute,及z-index值来改变元素的层级,但是z-index过多或其值如果没有充分考虑的话,元素的层级关系会非常复杂。我这里只总结了position:relative和position:absolute在兄弟元素中的一些层级关系,有遗漏或者不足的地方,欢迎大家留言补充和斧正。

注意:这里把position : static这个默认的定位属性值同意认为没有定位,position:relative、position:absolute和position:fixed都认为是有定位 。position:fixed在ie6下未支持,所以本位不做实例,在其他浏览器下同样适用。

一、在没有定位属性的兄弟元素中,一般在html结构下面的元素层级高于结构上面的元素。

可能表达不清楚,看一段代码吧:

<div style="width:400px; height:200px; background:#000; color:#FFF">结构上面的元素:width:400px; height:200px;<br />
这里黑色的可见高度是150px,还有50px被红色的元素遮罩了(margin-top:-50px)。</div>
<div style="width:500px; height:100px;background:red; margin-top:-50px;color:#FFF">结构下面的元素:width:500px; height:100px;</div>

如图显示:

2009-12-21_192737

=====================分割线===========================

在了看一个类似的例子:

<div style="width:400px; height:200px; background:#000; color:#FFF;margin-bottom:-110px;">结构上面的元素:width:400px; height:200px;<br />
这里黑色的可见高度加起来是100px,还有100px被红色的元素遮罩了。</div>
<div style="width:500px; height:100px;background:red;color:#FFF">结构下面的元素:width:500px; height:100px;</div>

如图显示:

2009-12-21_193043

这两个例子充分说明了一般情况下:没有定位的兄弟元素中,在html结构下面的元素层级高于结构上面的元素。

二,兄弟元素中有定位属性的元素层级高于没有这两个属性的其他兄弟元素。

看一个在结构上面元素上加position:absolute例子,这个可能大家很常用:

<div style="width:400px; height:200px; background:#000; color:#FFF; position:absolute">结构上面的元素:width:400px; height:200px;<br />
这里黑色的可见高度加起来是200px,红色的元素被遮罩了。</div>
<div style="width:500px; height:100px;background:red; color:#FFF">结构下面的元素:width:500px; height:100px;</div>

如图显示:

2009-12-21_194510

=====================分割线===========================

看一个在结构上面元素上加position:relative例子,这个可以用来做很多事情,特别是选项效果,还有元素不想脱离文档流的时候:

<div style="width:400px; height:200px; background:#000; color:#FFF; position:relative">结构上面的元素:width:400px; height:200px;<br />
这里黑色的可见高度加起来是200px,红色的元素的50高度被遮罩了。</div>
<div style="width:500px; height:100px;background:red; margin-top:-50px; color:#FFF">结构下面的元素:width:500px; height:100px;</div>

如图显示:

2009-12-21_195551

三、兄弟元素中有position:relative和position:absolute定位属性的元素,结构下面的元素层级高于结构上面的元素,但是有z-index设置时,z-index值大者居上。

看一个在例子:

<div style="width:500px; height:140px; background:#000; position:relative; z-index:100"></div>
<div style="position:absolute;top:0; width:600px; height:120px;background:red; z-index:99"></div>

四、非兄弟元素,任意一者或其祖元素拥有动态定位时,同时各自向上寻找动态定位的祖元素,并分别从中拿出具备最高级别的祖元素(或其本身)进行比较。

1.子元素的z-index无论多大,父元素大者居上,如图:

05

2.父元素居下,子元素也可以居上,如图:

06

或者看这段代码:

<div style="width:800px; height:160px; background:#CDCDCD">
<div style="width:500px; height:140px; background:#000; position:relative; z-index:100">这个在最上层</div>
<div style="position:absolute;top:0; width:600px; height:120px;background:red; z-index:99"></div>
</div>
<div style="background:#00F;width:600px; height:130px; margin-top:-50px"></div>

3.结合以上两点,看个更加复杂的,如图:

07

有遗漏或者不足的地方,欢迎大家留言补充和斧正。