2011-09-06 61 views
19

由於IE正在擺脫版本10中的條件註釋,所以我急需找到一個專門針對IE10的「CSS黑客」。請注意,它必須是選擇器這是「黑客」,而不是CSS屬性。是否有針對IE10的特定CSS選擇器?

在Mozilla中,你可以使用:

@-moz-document url-prefix() { 
    h1 { 
    color: red; 
    } 
} 

而在Webkit的,你通常會做:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    h1 { 
    color: blue; 
    } 
} 

我會怎麼做在IE10類似的東西?

+0

我只是使用IE條件評論。此外,我的朋友或家人甚至都不瞭解IE 10。 –

+7

IE10可能符合標準,不需要任何黑客。而泰勒,這個問題表示它不支持有條件的評論。 – BoltClock

+2

@BoltClock不幸的是,即使在符合標準的Web瀏覽器(Webkit/Firefox/Opera)中也存在一些奇怪的變體,因此當試圖在所有瀏覽器中創建像素完美體驗時,像-moz-document這樣的選擇器確實有所幫助。儘管我非常喜歡允許瀏覽器爲用戶顯示不同的體驗,但我的客戶卻沒有。 – kunambi

回答

33

下面的示例演示如何做到這一點

/* 
#ie10 will only be red in MSIE 10, 
both in high contrast (display setting) and default mode 
*/ 
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
    #ie10 { color: red; } 
} 

警告:可能會在IE11 +工作了。

+0

感謝您的意見,我接受了這個答案。它會瞄準IE11是否我認爲我們不應該擔心,一段時間:-) – kunambi

+5

這是危險的想法。即使IE11出現很長一段時間,這意味着代碼在你的頭腦中將不再新鮮,也許難以修復。此外,沒有人真正知道何時下一個版本的IE會出現,或者您正在解決的錯誤將被修復。我只會使用這樣的黑客來解決bug,如果這個bug在更高的版本中得到修復,那麼這個黑客就不會破壞。 –

+1

剛試過使用這種方法。只適用於開發環境,不適用於生產環境。 – agassi0430

3

據我所知,沒有這樣的CSS選擇器存在。如果你想專門針對IE10,爲什麼不寫一點javascript來設置一個名爲ie10的元素body,然後爲IE10創建一個特定的樣式?

2

我不確定這是否適合您的選擇符vs屬性要求,但我想出了以下方法,同時試圖在IE7-9中僞造text-shadow,然後關閉IE10中的黑客。關鍵是在IE10中使用新的-ms-animation東西。

.header { 
    /* For browsers that support it to add a little more punch to a @font-face */ 
    text-shadow: rgba(100, 100, 100, 0.5) 0 0 2px; 

    /* Make IE7-9 do faux bold instead and then turn down the opacity to match */ 
    *font-weight: bold; 
    font-weight: bold\9; 
    *filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75); 
    opacity: 0.75\9; 

    /* Uh oh! We've also caught IE10 in our above hack */ 

    /* But IE10 supports CSS3 animations. Will a high duration keep CPU usage down? */ 
    -ms-animation: text-shadow 60s infinite; 
} 

/* Define the animation */ 
@-ms-keyframes text-shadow { 
    0%, 100% { 
     font-weight: normal; 
     opacity: 1; 
    } 
} 
+6

這顯然是一個瘋子的工作! –

5

使用http://rafael.adm.br/css_browser_selector/的css瀏覽器選擇器,您可以在代碼中添加一個簡單的+並從您的CSS中調出IE10。

查找/msie\s(\d)/並將其更改爲/msie\s(\d+)/

現在,在你的CSS你選擇之前,只需添加.ie10像這樣:

.ie10 .class-name { width: 100px; }
.class-name { width: 90px; }

您現在應該看到IE10渲染100px的寬度和所有其他瀏覽器呈現90像素的寬度。

相關問題