我将这一使用交叉浏览器的原型汇集在一起,而CSS则只是用来对 h的图像饱和。 The s planty of ways to do it in JS/jQuery but hey why not only do it in CSS?
img[class*="filter-resat"] {
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"); // For Firefox 10+
filter: gray; // For IE 6+
-webkit-filter: grayscale(100%); // for Chrome & Safari
// Now we set the opacity
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; // for IE
filter: alpha(opacity=40); // Chrome + Safari
-moz-opacity: 0.6; // Firefox
-khtml-opacity: 0.6; // Safari pre-webkit
opacity: 0.6; // Modern
// Now we set up the transition
-webkit-transition: all 1.0s ease;
-webkit-backface-visibility: hidden;
}
img[class*="filter-resat"]: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%);
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
-moz-opacity: 1;
-khtml-opacity: 1;
opacity: 1;
}
// You can leave this part out and the above code will default to a 1 second transition duration.
img.filter-resat9 {-webkit-transition: all .9s ease;}
img.filter-resat8 {-webkit-transition: all .8s ease;}
img.filter-resat7 {-webkit-transition: all .7s ease;}
img.filter-resat6 {-webkit-transition: all .6s ease;}
img.filter-resat5 {-webkit-transition: all .5s ease;}
img.filter-resat4 {-webkit-transition: all .4s ease;}
img.filter-resat3 {-webkit-transition: all .3s ease;}
img.filter-resat2 {-webkit-transition: all .2s ease;}
img.filter-resat1 {-webkit-transition: all .1s ease;}
参看,此处和JSfiddle 。
http://jsfiddle.net/buttonpresser/x6GfX/show/light/