2014-01-21 36 views
1

如何檢測瀏覽器是否支持CSS @supports功能?由於Internet Explorer和Safari不支持它,因此我的Web應用程序不知道要在這些瀏覽器中應用哪些樣式。@supports的功能檢測?

+0

什麼現代化主義者? –

+0

這是一個框架,對嗎?如果可能的話,我想盡可能遠離框架。 – Azrael

+0

不...功能檢測JS - http://modernizr.com/ –

回答

1

使用純CSS,你可以排序的靠級聯,以確定通過使@supports規則與普遍支持的聲明,如color聲明,並覆蓋全局聲明另一個這樣的規則瀏覽器是否理解@supports

#test { 
    color: red; 
} 

@supports (color: green) { 
    #test { 
     color: green; 
    } 
} 

In any browser that implements @supports correctly, #test should have green text. Otherwise, it'll have red text.

見我的回答this question爲純CSS方法的詳細說明。

如果你正在尋找檢測使用JavaScript,你可以使用Modernizr特徵檢測庫作爲在評論中提到的(一定要包括在下載配置CSS-支持):

if (Modernizr.supports) { 
    console.log('Your browser supports @supports.'); 
} else { 
    console.log('Your browser does not support @supports.'); 
} 
+0

純粹的CSS解決方案可能是我正在尋找的答案。目前使用類似的東西,但沒有意識到最重要的功能。 – Azrael

+0

使用純粹的CSS解決方案,即使在先前在@supports塊中顯示樣式規則的瀏覽器中,也會應用基礎樣式規則。編輯:如果支持塊位於媒體塊內,是否重要? – Azrael

+0

@Elitis:應該沒關係 - 在這種情況下,只有'@ media'塊也可以應用'@ supports'塊。如果您需要從不支持的瀏覽器中排除基本樣式,請將它們移至「@支持」塊。另一方面,如果您需要從*支持*瀏覽器中排除基本樣式,則必須重寫這些樣式 - 這是依賴重寫的缺點。 – BoltClock