在IE6下如果某个标签使用了float属性,同时设置了其外补丁:

 
  
  1. float:left
  2. margin:10px 0 0 10px 

可以看出,上边距和左边距同样为10px,但第一个对象距左边有20px

如果向右浮动右边距设置为10px,则最靠近右边的浮动元素的右边距为20px。即边距方向和浮动方向一致时,靠近浮动方向一侧的元素会出现双边距。

 
解决办法:
1.修改display属性值
 
  
  1. display:inline

说明:这是因为块级对象默认的display属性值是block,当设置了浮动的同时,还设置了它的外边距就会出现这种情况。也许你会问:“为什么第二个对象和第一个对象之间就不存在双倍边距的BUG”?因为浮动都有其相对应的对象, 只有相对于其父对象的浮动对象才会出现这样的问题。第一个对象是相对父对象的,而第二个对象是相对第一个对象的,所以第二个对象在设置后不会出现问题。另外在一些特殊布局中,可能需要组合使用display:block;和display:inline;才能达到预期效果。
 
2.使用CSS hack
 
 
  
  1. margin:10px0 0 10px;
  2. *margin:10px 0 0 10px;
  3. _margin:10px 0 0 5px
“*”是IE7识别属性;“_”是IE6识别属性”HACK方式解决。
 
总结:这个现象仅当块级对象设置了浮动属性后才会出现,内联对象(行级对象)不会出现此问题。并且只有设置左边距和右边距的值才会出问题,上下边距不会出现问题。
 
参考:http://blog.sina.com.cn/s/blog_818a1e5b0100xxk4.html