IE 中多出一个字的 BUG

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

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>多了一只猪</title>
</head>
<body>
<div style="width:400px">
<div style="float:left"></div>
<!-- -->
<div style="float:right;width:400px">↓这就是多出来的那只猪</div>
</div>
</body>

</html>


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]-->


原文地址:http://www.cftea.com/c/2010/05/7735ITW0BBPTETCW.asp


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值