CSS crossbrowser grayscale filter

by Kelly Hawker

HTML

<div class="zd-stack">
  <img src="https://lirp.cdn-website.com/e66cd5b0/dms3rep/multi/opt/logo-thebedroom-1920w.png" />
</div>

CSS

.zd-stack img:hover {
    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");
                                         /* Firefox 10+ */
    filter: gray;                        /* IE6-9 */
    -webkit-filter: grayscale(100%);     /* Chrome 19+ & Safari 6+ */
    -webkit-transition: all .6s ease;    /* Fade to color for Chrome and Safari */
    -webkit-backface-visibility: hidden; /* Fix for transition flickering */;
}