§ ITPOW >> 文档 >> XHTML

IE 中多出一个字的 BUG

作者:vkvi 来源:ITPOW(原创) 日期:2010-5-20

今天遇到一个很奇怪的问题,在 IE 6 中查看网页,发现某个 li 的最后一个字又在下一行出现了,但代码中并没有多出一个字。

这是 IE 6 的一个 BUG。我最终发现去掉了其上层上层容器的 float:left; 多出来的字就消失了,原因我不清楚。另外我整理了网上的一些文章,希望对您有帮助。不过我的代码要复杂的多,且无注释,所以说 IE 中多出一个字的 BUG 应该是很复杂的。

运行下面的代码,可以发现多了个字。


[Ctrl+A 全部选择 提示:您可先修改部分代码,再按运行]

1.IE 6 的 BUG

经测试,只有 IE6 中有文字溢出 BUG,IE 7、IE 8、火狐正常。

2. 与浮动有关

去除 <div style=”float:left”></div> 中的“float:left;”,你会发现多出来的“猪”字不见了,页面正常显示。同样去除 <div style=”float:right;width:400px”> 中的“float:right;”,多余的“猪”字也同样消失,页面正常显示。

3. 与注释“<---->”的位置有关

将注释转移到 <div style=”float:left”></div> 前面,多余的“猪”字消失,页面正常显示。将注释转移到 <div style=”float:right;width:400px”> ↓这就是多出来的那只猪 </div> 下面,多余的“猪”字也同样消失,页面正常显示。

4. 与固定宽度有关

去除 <div style=”float:right;width:400px”> 中的“width:400px”,多余的“猪”字消失,页面正常显示。

5. 溢出字数与注释条数有关

增加注释的条数:当 1 条注释时,则多出来 1 个字;2 条注释时,则多出来 3 个字;3 条注释时,则多出来 5 个字……我们会从上面的规律中得到这样一个公式:溢出文字的字数 = 注释的条数 *2-1,这里的字数在中文或英文数字时都成立。当溢出的文字字数大于文本的字数时,文字区块将会消失。

解决方法:

a. 不放置注释。最简单、最快捷的解决方法

b. 注释不要放置于 2 个浮动的区块之间

c. 将文字区块包含在新的 <div></div> 之间,如:<div style=”float:right;width:400px”><div> ↓这就是多出来的那只猪 </div> </div>

d. 去除文字区块的固定宽度,与 3 有相似之处

e. 有的人在注释后加一个 <br /> 或者空格,但只是消除现象。

f. 不要给浮动元素设置多宽度,使其不会到达包含元素的底部,或者对最后一个元素设置 margin-right: -3px; 或者更小。

g. 注释可以这样写:<!--[if !IE]>Put your commentary in here...<![endif]-->

相关文章