Using CSS3 grayscale filter for portfolio images. Looks great in Chrome, Firefox, Safari 7, and iOS.
Image-Chrome 30: Chrome 30 http://pikku.co/test/chrome-hover.png
Image-Firefox 24: Firefox 24 http://pikku.co/test/firefox-hover.png
Contrast overload in Safari 6. Grays are completely blown out and black is oversaturated.
Image-Safari 6: Safari 6 http://pikku.co/test/safari-hover.png
Code:
img.grayscale {
/* Firefox 10+ */
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");
/* IE6-9 */
filter: gray;
/* Chrome 19+ & Safari 6+ */
-webkit-filter: grayscale(100%);
/* Fade to color for Chrome and Safari */
-webkit-transition: all .6s ease;
/* Fix for transition flickering */
-webkit-backface-visibility: hidden;
}
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");
-webkit-filter: grayscale(0%);
}
Adding a contrast filter, -webkit-filter: contrast(.5)
, cancels out grayscale effect. Any ideas about how to control contrast in Safari 6?
Demo site: flowmedia.dk
Just combine the filters: