filter: grayscale 使用可以调整元素的灰度值
css:
body{
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
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: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
-webkit-filter: grayscale(1);
}
兼容IE的办法:
- 实现办法是引入grayscale.js,Demo下载 grayscale.js Demo
- 简单查看了该js的源码后发现会将color、background-color、borderColor等属性提取出来后替换成灰色,background-image和图片会使用canvas绘制处理成灰色再替换成处理后的图片源
- demo内functions.js则是对判断浏览器userAgent来识别浏览器类型与版本,做出对应的处理