注释在IE中造成文字溢出的研究
2008-11-13 16:38
232 查看
在蓝色论坛看到这样一篇帖子《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、FF中测试,只在IE出现文字溢出现象。
说明:注释造成文字溢出是IE的BUG。
2、去除<div style="float:left"></div> 中的“float:left;”,你会发现多出来的“猪”字不见了,页面正常显示。
<!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></div>
<!-- -->
<div style="float:right;width:400px">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行同样去除 <div style="float:right;width:400px">中的“float:right;”,多余的“猪”字也同样消失,页面正常显示。
<!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="width:400px">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行说明:注释造成文字溢出与区块的浮动有关。
3、将注释转移到<div style="float:left"></div>前面,多余的“猪”字消失,页面正常显示。
<!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>
提示:您可以先修改部分代码再运行将注释转移到<div style="float:right;width:400px">↓这就是多出来的那只猪</div>下面,多余的“猪”字也同样消失,页面正常显示。
<!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>
提示:您可以先修改部分代码再运行说明:注释造成文字溢出与其位置有关。(可与第2点结合理解)
4、去除<div style="float:right;width:400px">中的“width:400px”,多余的“猪”字消失,页面正常显示。
<!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;">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行说明:注释造成文字溢出与文字区块的固定宽度有关(无论是绝对值还是相对值)。
5、增加注释的条数:当1条注释时,则多出来1个字;2条注释时,则多出来3个字;3条注释时,则多出来5个字……
<!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>
提示:您可以先修改部分代码再运行
<!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>
提示:您可以先修改部分代码再运行
<!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>
提示:您可以先修改部分代码再运行
<!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>
提示:您可以先修改部分代码再运行我们会从上面的规律中得到这样一个公式:溢出文字的字数=注释的条数*2-1,这里的字数在中文或英文数字时都成立。
当溢出的文字字数大于文本的字数时,文字区块将会消失。
<!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和2的测试得知:注释不要放置于2个浮动的区块之间。
解决方法:
1、不放置注释。最简单、最快捷的解决方法,嘿嘿……
<!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>
提示:您可以先修改部分代码再运行2、注释不要放置于2个浮动的区块之间。
<!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>
提示:您可以先修改部分代码再运行3、将文字区块包含在新的<div></div>之间,如:<div style="float:right;width:400px"><div>↓这就是多出来的那只猪</div></div>。
<!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></div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行4、去除文字区块的固定宽度,与3有相似之处。
<!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;">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行可能以上的分析和解决方法有不到位或者不准确的地方,欢迎讨论指正。
实验代码如下:
<!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、FF中测试,只在IE出现文字溢出现象。
说明:注释造成文字溢出是IE的BUG。
2、去除<div style="float:left"></div> 中的“float:left;”,你会发现多出来的“猪”字不见了,页面正常显示。
<!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></div>
<!-- -->
<div style="float:right;width:400px">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行同样去除 <div style="float:right;width:400px">中的“float:right;”,多余的“猪”字也同样消失,页面正常显示。
<!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="width:400px">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行说明:注释造成文字溢出与区块的浮动有关。
3、将注释转移到<div style="float:left"></div>前面,多余的“猪”字消失,页面正常显示。
<!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>
提示:您可以先修改部分代码再运行将注释转移到<div style="float:right;width:400px">↓这就是多出来的那只猪</div>下面,多余的“猪”字也同样消失,页面正常显示。
<!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>
提示:您可以先修改部分代码再运行说明:注释造成文字溢出与其位置有关。(可与第2点结合理解)
4、去除<div style="float:right;width:400px">中的“width:400px”,多余的“猪”字消失,页面正常显示。
<!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;">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行说明:注释造成文字溢出与文字区块的固定宽度有关(无论是绝对值还是相对值)。
5、增加注释的条数:当1条注释时,则多出来1个字;2条注释时,则多出来3个字;3条注释时,则多出来5个字……
<!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>
提示:您可以先修改部分代码再运行
<!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>
提示:您可以先修改部分代码再运行
<!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>
提示:您可以先修改部分代码再运行
<!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>
提示:您可以先修改部分代码再运行我们会从上面的规律中得到这样一个公式:溢出文字的字数=注释的条数*2-1,这里的字数在中文或英文数字时都成立。
当溢出的文字字数大于文本的字数时,文字区块将会消失。
<!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和2的测试得知:注释不要放置于2个浮动的区块之间。
解决方法:
1、不放置注释。最简单、最快捷的解决方法,嘿嘿……
<!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>
提示:您可以先修改部分代码再运行2、注释不要放置于2个浮动的区块之间。
<!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>
提示:您可以先修改部分代码再运行3、将文字区块包含在新的<div></div>之间,如:<div style="float:right;width:400px"><div>↓这就是多出来的那只猪</div></div>。
<!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></div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行4、去除文字区块的固定宽度,与3有相似之处。
<!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;">↓这就是多出来的那只猪</div>
</div>
</body>
</html>
提示:您可以先修改部分代码再运行可能以上的分析和解决方法有不到位或者不准确的地方,欢迎讨论指正。
相关文章推荐
- 注释在IE中造成文字溢出的研究
- 通用网页/ie 0day溢出heapspray(spray heap)挂马技术研究/分析与注释/解释
- 网页注释在IE中产生文字溢出
- firefox样式表cursor和兼容Ie firefox,解决文字溢出的问题(word-wrap:break-word;word-break:break-all)
- IE6的3PX(像素)BUG,造成文字溢出
- IE6下注释引起的文字溢出和浮动错位
- IE6 注释引起的文字溢出和浮动错位的解决思路
- DuplicateCharactersBug在IE中的HTML注释引起文字奇怪的复制-DivCSS教程
- 【IE6.0 Bug总结之五】文字溢出bug(注释bug)
- CSS教程:关于文字溢出问题的研究
- [转]兼容IE firefox(FF下不认word-break及word-wrap),解决文字溢出的问题
- 文字溢出,IE5、6下导致多复制文字的解决方法(文字小尾巴解决方案)
- 兼容Ie firefox,解决文字溢出的问题
- <转>IE6浏览器网页文字溢出的解决办法(重复字符bug)---隐藏float对其他float造成影响
- IE6重影的解决方法(关于注释引起的文字溢出/3px Bug/双float<浮动>元素字符)
- ie6注释造成文字“重影”分析。双文字
- div+css IE兼容 IE6文字溢出
- IE 实现文字超出指定长度后用省略号代替
- 【转】IE中的条件注释(<!--[if lt IE 7]><![endif]-->)
- 条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>