2012-12-04 19 views
0

這裏我有一個奇怪模式的網站。 :(我正在修補一些頁面到CSS1兼容模式下適用於Chrome和Firefox的Quirks/BackCompat模式的純CSS選擇器

我想重用現有的CSS並只保留一個版本,但是有些值在quirks和CSS模式下必須不同,因爲它們有不同的盒子模型。

是否有一個選擇,它可以告訴該HTML是否怪癖或標準模式? 我知道有針對IE一些CSS黑客,但我需要支持Chrome和Firefox。

回答

1

事實並非如此很多CSS選擇器怪癖,因爲它是一個HTML怪癖,但idclass屬性在怪癖模式下不區分大小寫,這意味着選擇器在大小寫方面有所不同將永遠匹配。細節見this answer及其第一個腳註。

如果你可以修改你的HTML您所有的網頁,添加一個類或者您的htmlbody元素(類名稱並不重要),並在不同的情況下,與相同的類名前綴的怪癖選擇,。下面是一個代碼示例:

<html class="quirks"> 
<!-- Or: <body class="quirks"> --> 
#foo { 
    width: 480px; 
    padding: 10px; 
} 

/* Capital Q instead of small q, won't match in standards mode with a doctype */ 
.Quirks #foo { 
    width: 500px; 
} 

這適用於所有瀏覽器。

如果你不能修改你的HTML,那麼我不相信有一個適用於所有瀏覽器的純CSS解決方案。在以前的IE版本中,您可以故意使用CSS2.1選擇器來隱藏IE5怪癖和舊版本的樣式(如良好的ol'html > body黑客),但您無法使用Chrome和Firefox或者新的interoperable quirks mode在IE10中,因爲它們在怪癖和標準模式下支持相同的高級選擇器。

相關問題