IE6/IE7之浮动元素最后一个字母重复Bug

影响版本

这个bug影响: IE7, IE6

症状

浮动元素最后一个字母重复

描述

IE6和IE7中浮动元素的最后一个字符重复,让我们看一下例子:

例子

可用的例子在 separate page

HTMLCode:
<div> <p> <span>A</span> <span>B</span> <span>C</span> </p> </div> 
CSSCode:
div { width: 100px; } p { margin-right: 1px; } span { float: left; width: 120px; }

造成bug的原因是: 我们有一个确定宽度的div元素. 在这个div中有一个属性margin-right属性设置为任何非0数值的 <p> 元素(margin is not required in IE6). 在这个P元素中有三个float属性设置为left,并且宽的设置为大于父容器div宽度的宽度值的span元素.浏览器中发生了什么,最后一个字母C在下一行重复我强调过要有三个float元素, 如果没有三个;bug就不会出现,如果多于三个,bug就会出现 "Float Squeeze Weird Gap Bug" .

解决

修正版本

所有版本

描述

注意: 这个bug也通过 CS solution to "Float Squeeze Weird Gap Bug"修正

我们将要用IEbug修正瑞士军刀来修正这个bug,不,我不是在说layout属性,即时给我们的胖元素设置了layout,那么也只能修正IE7中的bug,而不能修正IE6,让我们看一下例子:

修正的例子在 separate page

HTMLCode:
<div> <p> <span>A</span> <span>B</span> <span>C</span> </p> </div> 
CSSCode:
div { width: 100px; } 
 p { margin-right: 1px; }  
span { float: left; width: 120px; position: relative; }

唯一改变了的是我们添加 position property 并设置属性 relative 在我们的浮动元素span上.  在 IE7 还是 IE6中重复的字幕不会出现了.

posted @ 2012-05-11 18:02  流失的痕迹  阅读(993)  评论(0编辑  收藏  举报