这几天在写公司的网站,发现一个在IE6下的bug,具体表现为父子元素均为相对定位(relative)时,子元素从原位置偏移,但父元素却仍认为子元素在原来位置,并按偏移前的位置给子元素空出相应的像素,从而破坏布局。
具体代码如下:
<div id="L">
<ul>
<li><a></a></li>
</ul>
</div>
#L{
position: relative;
float: left;
left: 0px;
top: 0px;
width: 148px;
background: black;
}
#L ul{
position: relative;
left: -40px;
width: 148px;
}
#L ul li {
width: 148px;
}
写到这里时,这个列表在firefox2 Oprea9 IE7中均能表现良好了,但在在IE6中,父元素却在右边多出了40个像素,这40个像素来源于ie6的父元素认为子元素的位置并没有变化——虽然与此同时IE6正确的把ul元素偏移了40个像素。
最后,我们不得不为ie6准备一份单独的css(用import及ie6的注脚hack为ie6导入)
如下:
#L ul{
position: absolute;
top: 65px;
}
ie6的表现真是差劲,但是我们不能怪它,毕竟它是一个很多年前的浏览器了,作为五六年前的产品,它还是相当不错的。不过,现在IE7出来了,广大的IE用户你们有更好的选择,别跟我说你是盗版装不上,实际上有N种方式用上IE7。当然,作为我个人而言,我更喜欢Firefox。
最后,再次呼吁:告别IE6吧!
没有评论:
发表评论