我试图使用W3C CSS验证器验证我的网站的CSS。不幸的是,YUI框架中的reset-min.css在字符串“{* font-size:100%;”上产生了解析错误。为什么YUI重置CSS没有通过验证?
在进一步的调查,我注意到Firefox的错误控制台上看到以下错误:
警告:预期的声明,但是发现 '*'。跳到下一个声明。
我找不到'*'的含义的任何解释,也没有引用这个流行的重置CSS中的问题。
我错过了什么?
我试图使用W3C CSS验证器验证我的网站的CSS。不幸的是,YUI框架中的reset-min.css在字符串“{* font-size:100%;”上产生了解析错误。为什么YUI重置CSS没有通过验证?
在进一步的调查,我注意到Firefox的错误控制台上看到以下错误:
警告:预期的声明,但是发现 '*'。跳到下一个声明。
我找不到'*'的含义的任何解释,也没有引用这个流行的重置CSS中的问题。
我错过了什么?
这是IE7及更低版本的黑客攻击。 IE7和更低版本将跳过星号并继续正常解析CSS。其他浏览器将忽略整个规则。例如,由于CSS将使用规则的最后声明版本,因此执行以下操作会导致IE7及更低版本使用113%的font-size
,而其他浏览器对段落使用100%的font-size
。
p { font-size: 100%; *font-size: 113%; }
有一个更多的信息在webdevout.net。
就我个人而言,我认为使用这种黑客来解决IE的破坏是可以接受的。显然,雅虎!感觉是一样的。
这可能是一个IE兼容性黑客。
有些浏览器(特别是IE 6)会忽略许多CSS语法错误,而其他浏览器则不会。一些CSS文件将使用这些错误来制定一个规则,即一个浏览器将看到,另一个浏览器不会看到。
编辑:有关完整列表,请参阅here。在你的特定情况下,只有IE 7或更低版本才能看到该规则。
是的,只需抓住与*的声明,并把他们在没有*的IE条件CSS文件,然后你可以验证。 – 2009-08-30 20:59:33
虽然我不是纯粹主义者,但我仍然倾向于将这些垃圾投入IE条件式(更关心丑陋而不是有效性)。 – 2009-08-30 21:01:58