css中的滤镜是不是只能处理为黑灰色,不能处理成其他比较鲜艳的颜色(例:处理为红色)
答案:2 悬赏:0 手机版
解决时间 2021-01-25 07:09
- 提问者网友:几叶到寒
- 2021-01-25 00:45
css中的滤镜是不是只能处理为黑灰色,不能处理成其他比较鲜艳的颜色(例:处理为红色)
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-01-25 01:59
其实处理成灰色也不是通用的。网上有很多例子,但由於滤镜处理仍不被当作CSS规则,所以需要针对每款浏览器作设置。目前只有灰色(IE可以反色),没有其他颜色滤镜。
为什麼没有灰色或者其他颜色的滤镜?网页平台只是一个供分享及获取信息的平台,并不是万能手,不需要因为增加额外的效果而增加浏览器负担。
为什麼没有灰色或者其他颜色的滤镜?网页平台只是一个供分享及获取信息的平台,并不是万能手,不需要因为增加额外的效果而增加浏览器负担。
全部回答
- 1楼网友:独行浪子会拥风
- 2021-01-25 03:31
ie10和ie11在图像滤镜方面还是比较坑爹的,不能执行filter滤镜,而且连svg滤镜也不支持,所以通常是用js来实现这个效果的。 具体可以参考下面这段代码: var imgobj = document.getelementbyid('imgtogray'); function gray(imgobj) { var canvas = document.createelement('canvas'); var canvascontext = canvas.getcontext('2d'); var imgw = imgobj.width; var imgh = imgobj.height; canvas.width = imgw; canvas.height = imgh; canvascontext.drawimage(imgobj, 0, 0); var imgpixels = canvascontext.getimagedata(0, 0, imgw, imgh); for (var y = 0; y < imgpixels.height; y++) { for (var x = 0; x < imgpixels.width; x++) { var i = (y * 4) * imgpixels.width + x * 4; var avg = (imgpixels.data[i] + imgpixels.data[i + 1] + imgpixels.data[i + 2]) / 3; imgpixels.data[i] = avg; imgpixels.data[i + 1] = avg; imgpixels.data[i + 2] = avg; } } canvascontext.putimagedata(imgpixels, 0, 0, 0, 0, imgpixels.width, imgpixels.height); return canvas.todataurl(); } imgobj.src = gray(imgobj);还有一些跨浏览器的解决方案,代码太多,不贴出来了,百度一下就能够找到。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯