一起CSS

当前位置:一起CSS > CSS > 文章正文

“导”字导致样式失效

编码是一个标准页面所必须的,但有些人不太在意。或者不定义编码,或者混用编码。也许一般情况下不会出问题,但出了问题就很难会注意到和编码有关系。

一位朋友就因为混用编码引发了一个奇怪的问题:样式文件内的部分样式失效,而代码没有任何错误。你没遇见过这样的问题吧?来看看具体是什么情况:

这位朋友的 HTML 文件的编码为 gb2312 ,而 CSS 文件是 utf-8 的,CSS 文件里有一条注释为“/*导航条*/”。这些有问题吗?对!也许他们不同时存在就没问题,但他们存在了就产生了一个奇怪的问题:注释“/*导航条*/”与下一条注释之间的样式在 IE 下没有效果,如果没有下一条注释了,则下面的样式全部没有效果。不光是 IE6 、IE7 ,甚至 IE8 、IE9预览版都没有效果。用 IE 浏览器测试下面的地址试试吧。

查看Demo

从测试页面可以看到有两条样式失效了,分别是:字体红色和下划线。奇怪的是把“导”字或“航”字删掉,样式就起效果了。更奇怪的是“导”字或“航”字他们的总数是基数的时候,如“/*导导航条*”或"/*导导导条*/",是偶数的时候又失效,如“/*导航导航条*/”或“/*导导航航条*/”。

避免问题的方法还有:

  1. 统一编码
  2. 注释用英文或拼音
  3. 注释结束和开头与注释间留空格,如“/* 导航条 */”

最好的办法是统一编码,因为编码不统一,也许还有其他潜在的问题。

如果我们认为这个问题是中文文字引起的,那可能还会有其他文字会引起这样的问题。不过我国的文字有几万个,我们不可能一个一个去试,这只是根据上面情况的一种推测。

查看:2,922 评论:5 标签:

相关日志

已经有 5 条群众意见

  1. 小骆驼商队

    我也遇到过用中文注释导致样式失效的问题,当时花了好几个小时才发现是注释导致的,郁闷
    之后都用英文写注释了…… 对话

    #1
  2. keelii

    这东西也太诡异了,感觉IE的bug还是潜在的多呀!根本就搞不清楚什么情况的bug 对话

    #2
  3. zchiy2k

    “基数”—》“奇数”。
    我最近也遇到了一个问题,想请教一下,比如在firefox下对font-size:150%,到了IE8中字体就变得巨大无比,跟ff中的效果差的很多。最后只能用px来定义,字体使用的雅黑,font属性在ff和IE还有什么区别吗??
    第一次来就又挑错字又问问题的,实在不好意思。。。 对话

    #3
  4. uoian

    奇数,偶数中文字编码引起的。和导字没有关系吧。还是统一编码的好。 对话

    #4
  5. 龙子

    以前也碰见过这种问题,百思不得其解,今天总算是明白了。
    谢谢分享! 对话

    #5

我要发表意见