IE6、7下position和zindex的一个bug

作者:kun10 发布时间:December 27, 2010 分类:CSS

今天做demo遇到了一个很让人困扰的问题。
页面的头部有一个搜索框,里面有一个表示浮出层的div。

<div class="grandfather">
    <div class="father">
        <div class="popup">
        </div>
    </div>
    <div class="uncle">
         <div class="uncle-popup">
         </div>
    </div>
</div>

基本就是上面的类似的html结构,为了达到浮层不被别的层遮盖的目的
我设定了一下css

    .father {
                position:relative;
                z-index:4;
                width:400px;
                height:400px;
                background:#CCC;
                margin-bottom:-300px;
            }
    .popup {
                position:absolute;
                z-index:100;
                width:100px;
                height:200px;
                background:#999;
    }

可是没想到这样的样式在IE6下面居然被下面的元素给挡住了。
demo如下:地址http://lab.zipeng.info/ie6-position-zindex.html
查其原因,原来是uncle的div里面的元素也有z-index属性,虽然z-index的值比popup的值要小。但还是挡住了father里面的popup(这是关键)

最后查阅了资料,发现ie67下面要对比两个不同级别的元素的z-index要逐级的向父元素查找。如果父元素没有可比性,那么后面的元素会无视前面的元素的z-index强行覆盖。所以这在IE67下面是要注意。
解决方式也很简单,给父元素加上z-index使他们具有可比性。
哎,在这个IE6走向灭亡的年代才发现这样的问题真是不应该啊~~~

标签: IE6, bug

已有 2 条评论 »

  1. 磨粉机 磨粉机 January 5th, 2011 at 11:09 am

    呵呵 看的不是很明白呀

    1. kun10 kun10 January 28th, 2011 at 09:52 pm

      简单说就是IE6下面要对子元素比较zindex,首先要确定其上级的元素有zindex的可比性

添加新评论 »

captcha
请输入验证码