在某些浏览器中,包括Chrome稳定版,您可以这样做:
- h3 {
- -webkit-filter: grayscale(1);
- filter: grayscale(1);
- }
你不会知道,h1将完全渲染成灰度. Everything old is new again.
无论如何 – 有谁知道任何方式来检测特征?
我需要能够应用其他样式,如果fil过滤器不起作用.
解决方法
所谓UPDATED答案:
由于OP提到了一个好点,我正在更新答案,但是没有任何相关或与之前的答案相矛盾,这只是浏览器检测.
艾伦H.提到IE在10日之前.版本,支持过滤器css属性,但不是我们都知道的(CSS3过滤器我的意思).
所以如果我们想要检测CSS3过滤器,我们应该继续使用一点浏览器检测.正如我在my comments提到的.
使用documentMode属性,并将其与简单的特征检测结合起来,我们可以在IE中排除所谓的误报.
- function css3FilterFeatureDetect(enableWebkit) {
- //As I mentioned in my comments,the only render engine which truly supports
- //CSS3 filter is webkit. so here we fill webkit detection arg with its default
- if(enableWebkit === undefined) {
- enableWebkit = false;
- }
- //creating an element dynamically
- el = document.createElement('div');
- //adding filter-blur property to it
- el.style.cssText = (enableWebkit?'-webkit-':'') + 'filter: blur(2px)';
- //checking whether the style is computed or ignored
- //And this is not because I don't understand the !! operator
- //This is because !! is so obscure for learning purposes! :D
- test1 = (el.style.length != 0);
- //checking for false positives of IE
- //I prefer Modernizr's smart method of browser detection
- test2 = (
- document.documentMode === undefined //non-IE browsers,including ancient IEs
- || document.documentMode > 9 //IE compatibility moe
- );
- //combining test results
- return test1 && test2;
- }
- if(document.body.style.webkitFilter !== undefined)
要么
- if(document.body.style.filter !== undefined)
额外的信息:
只需简单的功能检测就可以使用我上面的代码.有关支持的功能的列表,请查看:
> Filter Effects 1.0
> Filter Effects 1.0 functions
要在Chrome中现场演示过滤器,请查看:
还有2个资源给你:
> CSS Filter Effects Landing in WebKit
> When can I use CSS Filter Effects?
在我写这个答案的时候,你必须使用webkit供应商的前缀使它工作.