本文转自 smigoo MM 的《IE6重复字符BUG》,不过经我亲身体会,不只是 IE6 有这个 BUG,在特定条件之下,所有以 IE 为核心的浏览器下都有这 BUG,(此处省略三万字鄙视 IE 浏览器……)如果不是亲眼所见,估计读者仅看本文标题是很难想象 IE 有多变态。
先上个测试页:http://wange.im/demo/duplicate-characters-bug/,你也可以下载这个 DEMO 页的源码在本地测试,后面的注释是4种解决方法,可以一一删掉注释查看。
大家可以用 IE6、IE7、Firefox、Opera、Chrome 等主流浏览器分别来测试一下这个页面,你会发现一个有趣的现象。

出现这个BUG的“机遇“其实并不大,要满足以下一个或者多个条件:
1.父元素的内部有多个浮动元素
2. 最后一个浮动元素前有隐藏元素:包括html注释和display:none的元素
3.子元素的宽度和父元素相同,父元素的宽度减去子元素宽度小于3px
有个特别有意思的情况出现,当我在最后一个显示的div前,再加display:none;的div,下面又会增加不固定的数量的重复文字!
最终得出的结论是:溢出文字的字数=注释的条数 *2-1
这个变态BUG的最早文献是出现在2004年,这里可见。
我不全文翻译了,总结一下他的方法。
1.把浮动的子元素加上display:inline;属性
2.去掉注释 ,使用IE专用注释。<!–[if !IE]>Put your commentary in here…<![endif]–>
以下是 Smigoo MM 总结的解决方法:
1.把浮动的子元素加上display:inline;属性(推荐)
2.去掉注释和所有隐藏元素(缺点:特殊情况下不一定可以删除)
3. 把浮动的子元素加上margin-right:-3px;属性(缺点:要加IE6的hack,也算是好方法)
4.在隐藏的DIV外嵌套一个DIV(缺点:增加的结果复杂性)
经过结合 smigoo MM 的总结,和我遇到的实际情况,因为我的父级浮动元素比较多,导致在 IE7/IE8 下都出现重复字符的囧境,所以我个人建议把浮动元素改成 display:inline-block;
现在算是完美解决了 IE 下重复字符的问题,感谢 smigoo MM,再一次让我认清了 IE 的丑恶本质,和 G/F/W 有的一拼!
-
汇总 IE 在 CSS 中常见的 中 bug2010年01月29日 -
我们都错怪 IE6 了2010年11月3日 -
Chrome 强制显示最小字体为 12px?2010年05月3日 -
IE 浏览器中用 Firebug 调试的方法2010年03月26日
IE6诞生的时候有CSS吗?当时都是表格布局吧。
这就是表格布局的后遗症
恩 在SM看到了。。
SM。。。。。
对于解决不了的问题,我就回避。如果是IE6的,就确保淡定
高手,学习中!
高手可不敢当呀,我也是学来的
祝声名远播的博主节日快乐~
学习中~
没碰到过这种问题
。。。我倒是碰到好几次了
我遇到bug不怪ie,怪我自己不懂。
所以IE就更猖狂了
这个BUG六七年前就有老外研究了,叫做多出来的猪
多出来的猪。。。还有专用名字呀
不用IE6啦,真想把网吧的IE6升级了。
放弃IE6等于放弃用IE6的用户啊
css+div的兼容版本问题啊!
可怜的IE6啊,真无奈
研究得很细节了。
遇到的实际问题,不得不深究呐
我的侧栏在ie8下也有问题
那就把它强制以IE7模式显示啊,兼容IE8可简单了
怎么强制以IE7模式显示,你教教我啊
就一行代码:
http://wange.im/simple-trick-to-solve-the-compatibility-issue-in-ie8.html
呃~没注意过这个情况……而且IE6太老了,它没有错,错的是用它的人。
可IE6这么老,为什么还不淘汰呢?像IE5.5那样多好,自生自灭
没人用不就淘汰了,IE6不会强迫人用吧
今天才第一天,要坚持住啊
这个相对于IE的bug那可真是九牛一毛呀!
IE的bug数不胜数了
我之前也遇到过,好说歹说现在碰到这问题是完全木问题啦咩哈哈~~
我今天在做主题的时候又遇到了,轻松搞定,HOHO
额,我感觉没什么呀,不就是字体不一样么- -
我真的没有看出来啥不同
。。。看来你是没有尝过IE的苦头
为了万恶的ie 昨天又消耗了我4个小时的生命。TNND。
我还正在为IE消耗生命呢,唉
怪不得我说怎么在GR里看着标题眼熟呢,原来以前sm发过。
恩哼,就是照搬了MM的文章,哈哈
去TM的IE,过来发泄一下
所有愤恨IE的,都可以来发泄
我晕 这让我怎么评论啊,大半夜的突然看见一篇看过的文章,晕了!
再复习一遍嘛
没太注意,学习了,以后遇到回来查你的文章解决。
我本来也不会注意这个,就是因为遇到了才想起这个问题的
我现在用ubuntu。。唉。。连个好用的QQ都找不到
ubuntu下面,估计可以说是web qq最好用了。
还不如放弃QQ呢,换gtalk吧
弃用企鹅还是不太实际的,毕竟有很多客户、朋友、同学都在QQ上挂死了。
我等你起床了才敢睡觉呀,怕别人来这里捣乱呢。
发工资发工资发工资
。。。。好像神舟电脑默认安装的就是ubuntu
来晚了……刚装上WinServer08R2,过来发现你也在折腾……
给 IE 烧根香 ~
恩,让IE早死早超生
好久不用ie了。现在是墙外的ip
拒绝IE,墙外IP,都是明智之举啊
对啊。不保险。呵呵
我来的也不迟,呵呵..
排名前十,恩,很靠前呀
呵呵..这样都能够发现..人民的力量是伟大的,哈哈
第二
速度杀来~
哎,下次万戈提前提醒我一下吧。。不算作弊。。。
看到twitter上的消息没,那是同步更新的,最快最快的啦
正式看到推上的才过来的,如果万戈能够在点发布之前就通知一下。。。
哈哈,那明天先在推上公开通知一下啦
抢沙发
还真够准时的
流量无限,空间无限,你尽管刷,我不怕
我只需要这个月的评论第一..
不要怪我哈..
哈哈,没事,要拉开差距才行啊