这个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引起的。