我試圖使用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