IE6和IE7渲染相对定位元素的Bug

这个Bug很恼人。如果网页元素的样式使用了“position: relative”就很可能遇到这个问题。问题的表示为设置了position:raltive的元素在浏览器改变大小或者拖动滚动条时位置不会发生变化。任你怎么拖动浏览器的边框或者滚动条,这个元素就是赖在那里不动。

具体的描述可以参看这里:http://friendlybit.com/css/ie6-resize-bug/(英文)

要自己重现也很简单,样式太概是这样的:

body {
   margin: 0 auto;
   width: 760px; /* 任意设置一个固定宽度的容器 */
}
/* 把你要测试的元素放入容器并设置CSS: position: relative; */
#example p {
   position: relative;
}

HTML可能是这样的:

<html>

<head>

<title>test</title>

<style>

body { margin: 0 auto; width: 760px; border:1px red; /* 任意设置一个固定宽度的容器 */ }

/* 把你要测试的元素放入容器并设置CSS: position: relative; */ #example p { position: relative; border:1px green; }

</style>

</head>

<body>

<div id=”example”><p>当浏览器改变窗口尺寸时这里的文字位置不会改变。</p></div>

</body>

</html>

 

你也可以分别用IE6、IE7、FF等浏览器查看这个页面:

http://friendlybit.com/files/ie6resizebug/

也可以直接用IE6和IE7访问这个页面:http://friendlybit.com/files/ie6resizebug/fixed.html

上面链接是修复之后的呈现。修复的方式很简单,就是在body上加入样式“position:relative”。不过如果是在一个布局很复杂的页面上进行这样的修复,不知道会不会对页面其他样式产生影响……

IE的进化速度太慢了,到了IE8还不支持CSS圆角,而IE6还有很多人在用,伤脑筋。如果是我自己能够控制的项目,我可能会采取比较激进的措施,直接不理IE6和IE7——毕竟IE8都已经发布很久了。

对于这个Bug的总结就是,如果看到页面上某些元素随着浏览器大小的改变而位置不变(当然,前提是这不是你想要的效果)或者拖动滚动条某些元素的位置也不改变,那么就可以看看不动的元素是不是设置了position:relative,如果设置了,那么应该就是这个Bug引起的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值