当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS 层叠加的5条原则

CSS样式表
CSS 书写有怎样的功能
FireFox中上层高度不影下层的解决办法
CSS text-shadow属性
CSS @import与link的具体区别
详解css 定位与定位应用
网页设计新手30条进阶秘技
CSS分栏布局的方法:绝对定位和浮动
针对IE8正式版的CSS hack
条件 CSS的使用
CSS 垂直居中五种实现方法
CSS教程 汇总让IE6崩溃的几种方法
左上角图片文字环绕在图片右侧
鼠标指向网页图片时图片周围显示虚线框
CSS 快速提升设计可读性和维护性
CSS3 完美实现圆角效果
网页排版 5个CSS基础
CSS3 圆角效果
HTML5 CSS3给网站设计带来出色效果
CSS 网页布局 表格制作实例
css 滚动条换色调整代码

CSS样式表 中的 CSS 层叠加的5条原则


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 49 ::
收藏到网摘: n/a

首先明确几点在文中所需要用到的概念:

       
  1. 静态定位:position:static(为position属性的默认值)。
  2.    
  3. 动态定位:position:relative或position:absolute或position:fixed。
  4.    
  5. 祖元素:任意包含该元素的元素。
  6.    
  7. 父元素:直接包含该元素的祖元素。
  8.    
  9. 同辈元素:拥有共同的父元素的元素。

注:这些概念为作者自定义,仅用于本文。

引用:

关于同辈元素是个非常关键的词,这里还需要详细解释一下。

       
  1. <div>
  2.    
  3.     <div></div>
  4.    
  5.     <div id="a"></div>
  6.    
  7.     <div></div>
  8.    
  9.     <div></div>
  10.    
  11.     <div></div>
  12.    
  13.     <div></div>
  14.    
  15. </div>
  16.    
  17. <div id="f">
  18.    
  19.     <div></div>
  20.    
  21.     <div id="b"></div>
  22.    
  23.     <div id="c"></div>
  24.    
  25.     <div></div>
  26.    
  27.     <div></div>
  28.    
  29.     <div></div>
  30.    
  31. </div>

在这个例子中,div#a与div#b并不是“同辈元素”,只有像div#b和div#c这样拥有同样父体div#f的的元素才能叫“同辈元素”。

引用结束

接下来看看这五条法则

法则一:同辈元素定位方式相同,且无z-index设置时,html靠后者居上。

法则二:同辈元素同为动态定位时,且有z-index设置时,z-index值大者居上。

 

 猛点这里测试

法则三:同辈元素定位方式不同时,动态定位居上。

猛点这里测试

法则四:非同辈元素,任意一者及其祖元素不具备动态布局时,html靠后者居上。

 

猛点这里测试

法则五:【重要】非同辈元素,任意一者或其祖元素拥有动态定位时,同时各自向上寻找动态定位的祖元素,并分别从中拿出具备最高级别的祖元素(或其本身)进行比较。 

       
  1. <div id="ab" style="position:absolute;">
  2.    
  3.     <div id="a" style="position:relative; z-index:100;">
  4.    
  5.         <div id="a_inner1">
  6.    
  7.             <div id="a_inner2">
  8.    
  9.                 <div id="a_inner3" style="position:relative; z-index:98;">
  10.    
  11.                     <div id="a_inner4">
  12.    
  13.                         <div id="a_inner5">
  14.    
  15.                         </div>
  16.    
  17.                     </div>
  18.    
  19.                 </div>
  20.    
  21.             </div>
  22.    
  23.         </div>
  24.    
  25.     </div>
  26.    
  27.     <div id="b">
  28.    
  29.         <div id="b_inner1">
  30.    
  31.             <div id="b_inner2">
  32.    
  33.                 <div id="b_inner3" style="position:relative; z-index:99;">
  34.    
  35.                     <div id="b_inner4">
  36.    
  37.                     </div>
  38.    
  39.                 </div>
  40.    
  41.             </div>
  42.    
  43.         </div>
  44.    
  45.     </div>
  46.    
  47. </div>

 

情况1:子元素的z-index无论多大,父元素大者居上。

情况2:父元素居下,子元素也可以居上。

情况1、情况2结合扩展比较。

其实前四点都是基础,只有第五点比较难于理解,这里详细解释一下:

在这个例子中,我们来比较div#a_inner5和div#b_inner4的层叠关系。
到它们所共同拥有的祖元素div#ab的下一级为止,div#a_inner5的祖元素包括:div#a,div#a_inner1,div#a_inner2,div#a_inner3,div#a_inner4;div#b_inner4的祖元素包括:div#b,div#b_inner1,div#b_inner2,div#b_inner3。
然后分析它们的祖元素中具有动态定位的:div#a_inner5的祖元素中含有动态定位的元素有:div#a,div#a_inner3;div#b_inner4的祖元素中含有动态定位的元素有:div#b_inner3。
然后再拿出最高级进行比较:div#a > #div#b_inner3。

父元素居下,子元素也可以居上的情况,则是利用非同辈元素在祖元素具备动态布局时,其比较已经与position:static无关,而其祖元素却可以通过html的位置来进行比较。

引用结束

当然,有时候还存在特例,比如flash、比如ie6中的select无法遮住,这些都属于异常情况,大家可以自己搜索一下相关文章。