问题描述:
当相邻的两个元素,一个是浮动的,另一个非浮动,那么在IE6 下面将会产生3像素bug。
问题代码:
<html>
<head>
<style>
body{
margin:0px;
padding:0px;
}
#left_box{
background:#1C86EE;
float:left;
height:100px;
width:100px;
}
#right_box{
background:#76EE00;
height:100px;
width:200px;
}
</style>
</head>
<body>
<div id="left_box"></div>
<div id="right_box"></div>
</body>
</html>
各浏览器效果图:
注释:
如上图(上中下分别是firefox chrome IE6):
在firefox和chrome(包括IE8 IE9已测试)中,由于<div id="left_box">浮动了,所以脱离了文本流,导致了<div id="right_box">这个元素从头开始,所以蓝色覆盖在了绿色的上方。这是符合W3C标准的效果。
而在IE6则产生了著名的3像素bug,在相邻的像素中间产生了3个像素的空隙。
在IE7中(已测试),这个bug被修复了,消除了中间的3像素空隙。但是却不像firefox chrome那样符合W3C标准。
解决方法:
在各个浏览器下使得相邻的元素都是浮动的便可
代码如下:
<html>
<head>
<style>
body{
margin:0px;
padding:0px;
}
#left_box{
background:#1C86EE;
float:left;
height:100px;
width:100px;
}
#right_box{
background:#76EE00;
height:100px;
width:200px;
float:left; /*加上浮动便可*/
}
</style>
</head>
<body>
<div id="left_box"></div>
<div id="right_box"></div>
</body>
</html>
各浏览器效果图:
总结:
其实这个问题并不是特别的眼中以至于要用复杂的代码去解决它,只要你写出能符合W3C标准的效果代码变可以无形中解决这个问题。这里提出只是因为让大家更好的了解一下IE6下一些莫名其妙的事情罢了。