2011-06-13 64 views
0

我爲我的IE6/7/8 CSS「hacks」使用了條件註釋技術,以便主CSS文件(與通用/標準類)正確驗證(在單獨的CSS文件中隔離IE「黑客」) 。如何驗證IE 7/8 CSS黑客?

事情是這樣的:

<!--[if IE 7]> 
<link href="css/layoutIE7.css" rel="stylesheet" type="text/css" /> 
<![endif]--> 

現在我已經使用條件註釋的類添加到<body>(請閱讀這樣的回答:CSS if statements... is it right?)開始,然後針對每個需要在「黑客」之類的我的主要CSS文件,這樣我只能有一個文件。

這種方法的問題是,因爲我有一個文件中的一切,這意味着,如果我有一些「簡單」的CSS3 opacity屬性:

.mydiv { 
    opacity:0.6; 
} 

IE的「對口」(即:「黑客」)將必須是這樣的:

.mydiv { 
    filter:alpha(opacity=60); 
} 

這不驗證正確。

我知道我以前使用的方法仍然存在這個問題,但既然你可以在非IE環境中測試網站,它總是驗證(因爲我確定主CSS是有效的),現在, m試圖讓一個CSS不驗證(出於原因解釋)。

我的問題是如何添加這個「黑客」的方式,驗證者認爲它是有效的?

希望答案應該只有CSS。

+1

只是讓它無效。只要你知道你在做什麼,如果你打破了驗證,那並不重要。 Sun的每個CSS解析器都與IE的'filter'語法相似,所以它不會破壞任何東西。 – thirtydot 2011-06-13 17:04:26

+0

感謝大家的回答。 – jackJoe 2011-06-13 17:28:03

回答

2

我不認爲這是可能的。如果樣式表中存在非標準的CSS屬性,則不會進行驗證。沒有人能做到改變這一點。

我想你必須選擇有效的CSS或使用多個樣式表。

2

無法驗證CSS黑客行爲。如果您希望您的CSS有效,請回到之前使用的條件註釋解決方案。關於CSS驗證,許多網頁設計師大師(如Andy Clarke或Zeldman)一再表示CSS應該被用作有用的工具,而不是一般規則。除了幫助您糾正語法錯誤之外,它不會增加任何實用價值。

5

CSS驗證被高估。老實說。

只要您的標記驗證,您的CSS構建得很好,並且該網站在所有目標瀏覽器中都能正常工作,那麼您已完成了自己的工作。 CSS必須驗證的錯誤已經很長時間了。

+0

多麼有見解的答案。不是我不同意,但仍然... – BoltClock 2011-06-13 16:51:05

+0

也許是這樣,但它值得知道這個問題的作者。沒有修復CSS黑客(實際上並不是他的例子甚至是「黑客」),但這已經被覆蓋了。 – amustill 2011-06-13 16:54:47

+0

我傾向於不同意 - 即使許多規則沒有意義,擁有有效的HTML和CSS對於質量保證過程來說都是非常好的事情。綠燈比紅燈要好得多,需要仔細觀察才能解釋是否可以開車 – 2011-06-13 17:17:37