在蓝色论坛看到这样一篇帖子 《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、Firefox 中测试,只在 IE 出现文字溢出现象。
说明:注释造成文字溢出是 IE 的 BUG 。
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> 下面,多余的“猪”字也同样消失,页面正常显示。
说明:注释造成文字溢出与其位置有关。(可与第2点结合理解)
4、去除 <div style=”float:right;width:400px”> 中的“width:400px”,多余的“猪”字消失,页面正常显示。
说明:注释造成文字溢出与文字区块的固定宽度有关(无论是绝对值还是相对值)。
5、增加注释的条数:当1条注释时,则多出来 1 个字;2 条注释时,则多出来 3 个字;3 条注释时,则多出来 5 个字……
我们会从上面的规律中得到这样一个公式:溢出文字的字数=注释的条数 *2-1,这里的字数在中文或英文数字时都成立。
当溢出的文字字数大于文本的字数时,文字区块将会消失。
说明:溢出的字数与注释的条数有关。
由 1 和 2 的测试得知:注释不要放置于 2 个浮动的区块之间。
解决方法:
1、不放置注释。最简单、最快捷的解决方法,嘿嘿……
2、注释不要放置于 2 个浮动的区块之间。
3、将文字区块包含在新的 <div></div> 之间,如:<div style=”float:right;width:400px”><div> ↓这就是多出来的那只猪 </div> </div>。
4、去除文字区块的固定宽度,与 3 有相似之处。
可能以上的分析和解决方法有不到位或者不准确的地方,欢迎讨论指正。
witter:
共有7 条评论
你好,我是一条评论。
要删除这条评论,请先登录系统,查看这篇文章的评论列表,然后您就可以看到编辑或者删除评论的选项了。
自己坐下沙发
尤其是IE6里面啊!!!
很害人的!
有发现过好几次这个问题,
倒没有深究过几条注释多出几个字…
出现过注释生成单独一行的现象..
链接到蓝色理想 《IE中发现新BUG “重影”》。
本页帖子上的链接少了个h。
@xss 谢谢,已经修改!
[...] 转自怿飞 太感谢作者了,困扰终于知道原因了 [...]
[...] 经典论坛版主怿飞的《注释在IE中造成文字溢出的研究》。顺便说一下怿飞是一个在web标准方便很有研究的朋友。虽然没有直接和他接触过,但是却一直拜读他的文章。在此也给这位文章曾给予我很大帮助的朋友做个广告,他的博客为地址为:http://www.planabc.net/。 [...]