Search code examples
internet-explorercssinternet-explorer-10

internet explorer 10 - how to apply grayscale filter?


This CSS code works pretty nice for Internet Explorer until 9.

img.gray {
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
    filter: gray;
    -webkit-filter: grayscale(1);
}

But what do I need to do for Internet Explorer 10 ?


Solution

  • IE10 does not support DX filters as IE9 and earlier have done, nor does it support a prefixed version of the greyscale filter.

    However, you can use an SVG overlay in IE10 to accomplish the greyscaling. Example:

    img.grayscale:hover {
        filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale");
    }
    
    svg {
        background:url(http://4.bp.blogspot.com/-IzPWLqY4gJ0/T01CPzNb1KI/AAAAAAAACgA/_8uyj68QhFE/s400/a2cf7051-5952-4b39-aca3-4481976cb242.jpg);
    }
    

    (from: http://www.karlhorky.com/2012/06/cross-browser-image-grayscale-with-css.html)

    Simplified JSFiddle: http://jsfiddle.net/KatieK/qhU7d/2/

    More about the IE10 SVG filter effects: http://blogs.msdn.com/b/ie/archive/2011/10/14/svg-filter-effects-in-ie10.aspx