导航

毅博客

分享本身就是件快乐的事,我因别人得到帮助而感到幸福

« 打印样式的注意事项Firefox与IE下UL预设标记的异同 »

对《无法冲破的等级》一文的补充

本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
请大家帮忙:行文措辞难免有错,请大家在阅读时发现错误通过评论方式告诉我。谢谢大家

前些时间发表的《position:relative/absolute无法冲破的等级》一文,讲了定位中的等级,这几天再看的时候发现文中讲得并不透彻,没有直指关键。所以特别的在这里做出补充希望能把position中的等级讲得更为清楚、明确一些。

我们都知道,position有四个不同的值,分别为:static | absolute | fixed | relative。在苏昱的《CSS2中文手册》中是这样解释的:static:无特殊定位,对象遵循HTML定位规则; absolute:将对象从文档流中拖出,使用left,right,top,bottom等属性进行绝对定位。而其层叠通过z-index属性定义。此时对象不具有边距,但仍有补白和边框; relative:对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置; fixed:IE5.5及NS6尚不支持此属性。

但是要想改变对象的层叠位置需要的是另一个CSS属性:z-index。但是这个z-index并非是无所不能的,他受到了HTML代码等级的制约。z-index只能在同等级的HTML上体现他的作用。这里需要声明的是z-index只有在对象的position值为relative/absolute时才可以使用。下面我们就举些例子来解释等级的特性:

  1. <div id="box_1">
  2.   <div id="a">这是第一个块</div>
  3.   <div id="b">这是第二个块</div>
  4. </div>

针对上面的这个HTML代码我们还需要写一段CSS来定义它:

  1. #a,#b {position:absolute; width:300px; height:100px;  }
  2. #a {z-index:10; left:0; top:0;  background:#000; }
  3. #b {z-index:1; left:20px; top:20px; background:#c00; }

这是最普通的在这种情况下#a与#b的层叠等级是可以通过z-index来设定的。这是没问的,那么什么样的情况下就会出现问题呢?我们再看一个实例:

  1. <div id="box_1">
  2.   <div id="a">这是第一个块</div>
  3. </div>
  4. <div id="box_2">
  5.   <div id="b">这是第二个块</div>
  6. </div>

根据这个结构再写一个CSS,要注意这个CSS中的不同的地方:

  1. #box_1, #box_2 {position:relative; width:300px; height:100px; margin:10px; background:#ddd;}
  2. #a, #b {position:absolute; width:100px; height:300px; }
  3. #a {background:#c00;  z-index:100; }
  4. #b {background:#0c0;  z-index:1; left:50px;}

这时候我们看,不论#a设为多大的值,他都无法超过#b,所以说z-index是无法冲破HTML的等级的,他必需是要同等级的状态下才可以发挥威力.那么如何解决这个问题呢?我可以反过来想,堂兄弟之间的顺序不能被重组,何不把父辈的等级做一次重组呢?所以我们把#box_1的CSS中加入一个z-index:100; 在#box_2的CSS中加入z-index:1;这样再看一下效果:

  1. #box_1, #box_2 {position:relative; width:300px; height:100px; margin:10px; background:#ddd;}
  2. #box_1 {z-index:100;}
  3. #box_2 {z-index:1;}
  4. #a, #b {position:absolute; width:100px; height:300px; }
  5. #a {background:#c00; }
  6. #b {background:#0c0; left:50px;}

这是指定父级重组了层叠的顺序,如果要是没有办法一一指定父级的顺序重组,那就要看看上一篇的《position:relative/absolute无法冲破的等级》.但是也不是什么问题都能解决,但是看看也许能帮你想到更好的办法!

蓝色理想阅读处: http://bbs.blueidea.com/thread-2725018-1-1.html

作者 / 振之
网站 / 毅博客 http://andy.andymao.com/
电话 / (86)025 5890 9295
  • quote 1.coocboy
  • 可以反过来想,堂兄弟之间的顺序不能被重组,何不把父辈的等级做一次重组呢?
    ------------------------------------
    思路清晰.
  • 2007-3-7 14:58:54 回复该留言
  • quote 2.平淡人生
  • <div id="box_1">
    <div id="a">这是第一个块</div>
    </div>
    <div id="box_2">
    <div id="b">这是第二个块</div>
    </div>
    根据这个结构再写一个CSS,要注意这个CSS中的不同的地方:

    #box_1, #box_2 {position:relative; width:300px; height:100px; margin:10px; background:#ddd;}
    #a, #b {position:absolute; width:100px; height:300px; }
    #a {background:#c00; z-index:100; }
    #b {background:#0c0; z-index:1; left:50px;}
    这时候我们看,不论#a设为多大的值,他都无法超过#b,所以说z-index是无法冲破HTML的等级的,他必需是要同等级的状态下才可以发挥威力.那么如何解决这个问题呢?我可以反过来想,堂兄弟之间的顺序不能被重组,何不把父辈的等级做一次重组呢?所以我们把#box_1的CSS中加入一个z-index:100; 在#box_2的CSS中加入z-index:1;这样再看一下效果:
    你好啊~!我照你的方法分别在IE跟FF上做了实验 发觉IE上#a无论多大都无法超过#b 但在FF上就能超过了`!
  • 2007-4-17 23:46:52 回复该留言
  • quote 7.狗尾巴草
  • 这时候我们看,不论#a设为多大的值,他都无法超过#b,所以说z-index是无法冲破HTML的等级的,他必需是要同等级的状态下才可以发挥威力.那么如何解决这个问题呢?我可以反过来想,堂兄弟之间的顺序不能被重组,何不把父辈的等级做一次重组呢?所以我们把#box_1的CSS中加入一个z- index:100; 在#box_2的CSS中加入z-index:1;这样再看一下效果:
    你好啊~!我照你的方法分别在IE跟FF上做了实验 发觉IE上#a无论多大都无法超过#b 但在FF上就能超过了`!
    -------------------------------------------------------
    今天拜读小毅的好文后,我刚做这个实例的时候也碰到这个问题,后来想到《无法冲破的等级》里面提过“第一个LI的等级永远都要小于后一个LI的等级”。我想会不会是box1等级大于box2,所以在FF上a就能超过了b。这样子我把box2的等级设置成大于box1,这时候#a无论多大都无法超过#b。看来子级的等级取决于父级而不取决自身。
  • 2007-11-21 19:37:27 回复该留言
  • quote 8.振之
  • http://www.andymao.com/
  • @狗尾巴草 无法冲破的等级其实也就是指在父级关系没有变动的情况下子级是无法冲破更高层的等级的。我做了几次的补充,也同时指出,在父级没有设定index值的时候其这种关系却也不存在!这个关系只要理顺了很容易理解!
  • 2007-11-22 11:12:15 回复该留言
  • quote 9.狗尾巴草
  •   老大,首先感谢你使我明白“无法冲破等级”的条件。但是我还是没弄明白上面示例在IE和FF不同效果的原因。
      今天我在PLAN-ABC博客里面看到这么个解释:“在IE浏览器中,定位元素会产生一个新的stacking context,并且z-index的值为0开始”。那么我想这样子“无法冲破等级”的条件就触发了,所以在IE下#a无论多大都无法超过#b。
  • 2007-11-22 21:41:39 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog .Theme from Google黑板报 By Washun

Copyright 2005-2007 Jonmax.com. All Rights Reserved.

Search

最新评论及回复

最近发表

资助者链接