2011-05-23 22 views
6

我是新的有條件的CSS。我的問題是,使用它來處理跨瀏覽器問題是否正確?CSS if語句...是對的嗎?

例如:

#header 
{ 
    [if IE 7] width: 600px; 
    [if Webkit] width:300px;  
} 

編者按:OP是最有可能使用這樣的:http://www.conditional-css.com/

+0

你從哪裏得到這個例子? – 2011-05-23 18:39:36

+0

退房http://www.conditional-css.com/advanced – 2011-05-23 18:40:04

+0

@BalaR:有趣!我從來沒有聽說過這個。在問題中應該注意吸引適當的答案。 – 2011-05-23 18:40:55

回答

6

使用的實際CSS文件中的條件語句(或類),但是, html。

喜歡本作例子:

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

這是寫在HTML文件中,而不是CSS文件!

您發佈的格式我認爲並不實際,我敢打賭它沒有驗證,所以它不是標準的。

+0

打我到同一個答案! – Hacknightly 2011-05-23 18:39:56

+0

謝謝... jackJoe!我在網上看到了你的解決方案...問題是我怎樣才能用一個CSS文件做同樣的事情......而不是針對每種情況下的不同文件 – BorisD 2011-05-23 18:42:34

+0

@BorisD好,取決於是否有標準方法。我建議的解決方案是在標準範圍內,如果你想要一個非標準的解決方案,可以使用「hack」方法,比如爲類屬性添加一個下劃線,例如:_font:Arial(至少適用於IE6),或者使用「星級」入侵(爲類屬性添加一個asterix,與IE7一起工作)。請注意,這種方法在很大的CSS文件中很難排除故障! – jackJoe 2011-05-23 18:50:23

1

至於你的陳述的有效性,jackJoe的得到了一個很好的答案。 但是,這通常不是很好的做法。就佈局而言,更好的主意是獲得一個良好的佈局,它可以跨瀏覽器工作,並且不會影響瀏覽器特定的佈局問題。相反,擔心功能特定的問題。 當然,有些時候你無法解決IE6問題,在這一點上,你可能應該使用一些瀏覽器特定的代碼,這樣你就不會感到頭疼。

總的來說,這並不是一個好主意。

側注:爲什麼以蒂姆伯納斯李的名義,你還在試圖支持IE5?

6

這已經成爲普遍使用這種技術對IE的變化,我相信它是由HTML5 Boilerplate流行起來[來源]:

<!--[if lt IE 7]> <html lang="en-us" class="ie6"> <![endif]--> 
<!--[if IE 7]> <html lang="en-us" class="ie7"> <![endif]--> 
<!--[if IE 8]> <html lang="en-us" class="ie8"> <![endif]--> 
<!--[if gt IE 8]><!--> <html lang="en-us"> <!--<![endif]--> 

現在,您可以針對元素沒有IE瀏覽器在你的主要CSS黑客文件像這樣:

.ie6 .header li { 
    /* some ie6 only styles here */ 
} 

對我來說,這是很多比使用單獨的樣式表更容易維護,但遭受的其他瀏覽器讀取(但不適用)的IE圈以非常溫和的挫折LES。

如果您在使用Webkit時遇到問題,您很有可能在做的某些事情錯誤。不是絕對的,但它很可能是

編輯:許多瀏覽器允許您設置將只適用於該瀏覽器的規則的專有擴展。例如:

-moz-property {} 
-webkit-property {} 
-o-property {/* Opera */} 

注意,這並不意味着你可以申請任何 CSS屬性,你將看到什麼是可用的。

最佳參照,我可以很快找到:http://reference.sitepoint.com/css/vendorspecific

SO編輯,隨意更換這個環節如果有一個更好的參考

+1

這確實是一個很好的解決方案,感謝分享! – jackJoe 2011-05-23 18:52:14

+0

請注意,這是從HTML5Boilerplate源複製/粘貼,我不確定爲什麼'<! - [如果gt IE 8]>'用於定位非IE瀏覽器......值得研究,我並不完全熟悉IE條件註釋的來龍去脈。 – 2011-05-23 18:55:35

+0

無論如何,這是一個簡單而巧妙的方法;) – jackJoe 2011-05-23 18:58:22

0

不,這不是, 你可以試試這些

對於IE 7 & 8:
width: 600px\9;
對於IE10:
width:300px\0/;

對於所有瀏覽器:
width: 600px;

但是,如果你希望它在所有三個瀏覽器分別IE,GC,FF則使用這樣
width:300px; width: 600px\9; width:300px\0/;
我認爲這是你在找什麼對於!