2014-01-21 84 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