2009-03-05 87 views
5
  • CSS有@import,對吧?
  • IE6明白*html selector黑客,對不對?

是否有可能他們像CSS方法包括IE6 hacker

//*html @import url(ie6hacks.css); 

,或者可能結合起來,

//*html { @import url(ie6hacks.css); } 

好的瀏覽器必須跳過這個,它仍然可以在IE6中工作嗎?它如何看起來是一種解決方案?我可以清楚地看到它看起來像普通的CSS一樣醜陋。

回答

4

是否有可能像他們在規則一樣@import

* html @import url(ie6hacks.css); 

號組合都沒有選擇,所以不能與其他選擇相結合。

有辦法讓在規則作爲工作的黑客,例如這樣的:

@import url(/* no! */iehacks.css); 

將IE6/7加載而不是其他的瀏覽器。但是,我不會推薦使用它;這種事情可能非常脆弱。這個特殊的例子也是無效的CSS。正如丹尼爾所說,如果你想要單獨的.css文件作爲黑客,最好的方法是一個有條件包含的鏈接標記。 「* html」的美妙之處在於,你可以將黑客規則放在同一個樣式表中,只有少數幾個樣式表更易於管理;如果你有獨立的樣式表,它沒有任何優勢。

對於IE6來說,IMO「* html」是唯一的黑客,它今天仍然是合法的。所有盒子模型的東西都與IE5一起死了 - 假設你沒有使用IE6 Quirks模式,你不應該這麼做 - 而其他瀏覽器,甚至IE7,通常都很好,不能用簡單的黑客攻擊;可以針對他們的少數黑客太複雜/脆弱/無效以至於無法使用。

(作爲Simplified Box Model Hack的發明者,我對他們說了一個爽朗的好消息。)

3

不幸的是,*html黑客無法用於導入其他樣式表。

Here is an article解釋了黑客攻擊和其他攻擊IE特定錯誤的其他攻擊。

+0

謝謝你的明確答案。不幸的是,我今天沒有投票:) – temoto 2009-03-05 16:15:33

12

當你可以使用條件註釋來包含你所需要的CSS時,爲什麼還要使用這種古怪的黑客?

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

一些資源:

如果你真的必須使用@import,你可以採取的事實,IE不遵循規範的優勢@import規則。通常它必須是第一個想到的樣式表或樣式標記,或者它完全被忽略。但是,IE6(至少當我測試它)似乎並不在乎。沿着這些線路,你可以這樣做:

<style type="text/css"> 
.NotARealClass { } 

@import url("ie-style.css"); 
</style> 

請注意,我沒有再說什麼FF3(它無法加載,即-style.css文件)和IE6測試了這(它加載它反正)。你的旅費可能會改變。

+0

我知道,謝謝。爲什麼?因爲我認爲在CSS內部保留CSS hack會很聰明。 – temoto 2009-03-05 16:14:39

+0

如果你所有的ie6特定的css都在一個單獨的文件中,這是要走的路。如果你的ie6特有的css很少,你可以使用下劃線,例如。 _width被ie6解釋爲寬度(但不是ie7),雖然不會驗證.. – svinto 2009-03-05 16:22:43