In some browsers, including Chrome stable, you can do this:
h3 {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}
And wouldn’t you know it, the h1 will be rendered completely in grayscale. Everything old is new again.
Anyway — does anyone know of any way to feature-detect for this?
I need to be able to apply other styles if fil filter won’t work.
So called UPDATED answer:
As the OP mentioned a good point I'm updating the answer but this does not have anything related or in contradict with my previous answer, this is simply a browser detection.
Alan H. mentioned that IE, prior to its 10th. version, supports filter
css property but not in the way we all know about it (CSS3 filter
I meant).
So If we want to feature detect CSS3 filter
s only, we should go ahead and use a little browser-detection. As I mentioned in my comments.
Using documentMode
property, and combining it with our simple feature-detect we can exclude so called false positives in 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;
}
Original Modernizr source
if(document.body.style.webkitFilter !== undefined)
or
if(document.body.style.filter !== undefined)
Extra information:
For just a simple feature detection use my codes above. For a list of supported functions, take a look at here:
- Filter Effects 1.0
- Filter Effects 1.0 functions
For a live demonstration of filter
s in Chrome, take a look at here:
And 2 more resources for you:
- CSS Filter Effects Landing in WebKit
- When can I use CSS Filter Effects?
As I'm writing this answer, you must use webkit
vendor prefix to make it to work.