/ Published in: CSS
URL: http://stackoverflow.com/questions/609273/convert-an-image-to-grayscale-in-html-css
cross-browser solution
Expand |
Embed | Plain Text
/* * First create a file filters.svg with the following contents <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" baseProfile="full" 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> */ img { filter: url(filters.svg#grayscale); /* Firefox 3.5+ */ filter: gray; /* IE5+ */ -webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */ } img:hover { filter: none; -webkit-filter: grayscale(0); }
Comments
Subscribe to comments
You need to login to post a comment.

SVG File can be eliminated with the use of a data-uri. See blog post for more details: http://www.karlhorky.com/2012/06/cross-browser-image-grayscale-with-css.html
img.grayscale { filter: url("data:image/svg+xml;utf8,#grayscale"); /* Firefox 3.5+ / filter: gray; / IE6-9 / -webkit-filter: grayscale(100%); / Chrome 19+ & Safari 6+ */ }
The data-uri was stripped from my post. See the full blog post for the correct code: http://www.karlhorky.com/2012/06/cross-browser-image-grayscale-with-css.html