2013-03-06 89 views
0

好日子,HTML:使用條件註釋

我要申請兩個不同的CSS代碼來修復IE8某些字體渲染問題(仿粗體),如果他們已經後者不能識別所有的FONT-FAMILY得到了相同的名字,而是隻承認第一字體家庭,所以我試圖使用條件註釋來解決這個問題:

首先代碼是舊版本的IE(包括IE8)的:

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

第二個適用於IE9,IE10和所有非IE瀏覽器(Chrome,Firefox ,歌劇,Safari ......),它們都沒有這個仿粗體問題:

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

我知道的第一個代碼是正確的(或許不是:P),所以我想知道,如果第二個是正確的因爲當我在IE中更改兼容模式時,我沒有得到我期望的結果,當然在條件中有錯誤[如果IE 9 | !IE] 我也想知道正確的順序(如果有的話)把這兩個條件註釋。 請幫我,因爲我是一個兼容性相關的任何新手:/

+0

解決原始問題不是更好嗎?我認爲IE 8沒有正確聲明粗體字的問題。無論原始問題是詳細的,它也可能發生在其他瀏覽器中,所以使用IE版本嗅探不是正確的方法。 – 2013-03-07 04:10:33

回答

1

你可以申請IE9 +等瀏覽器第一的CSS,然後應用條件註釋爲IE8或更低,所以在fonts.cssfont-family規則將由規則IE8fonts.css被覆蓋,如果瀏覽器是小於或等於IE8。這樣可以避免複雜和不必要的條件評論。

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

希望它有幫助。

+0

非常感謝,這確實有助於:D – 2013-03-07 00:14:20

0

有條件的評論是一個IE的特定功能。其他瀏覽器只是將它們視爲正常的評論。請記住,HTML註釋始於<!--並以-->結尾。因此<!--[anything]>開始的正常評論,並且非IE用戶代理將在此之後忽略任何內容,直到下一次發生-->。另一方面,<!--[anything]><!-->是一個完整的評論,非IE瀏覽器會處理任何事情。

因此,我建議你使用:

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

從一個普通的HTML解析器(非IE)的角度來看,這是兩個常規註釋包圍鏈接元素。