HTML+CSS+JS实现canvas仿ps橡皮擦刮卡效果

效果演示: 文末获取源码 

主要JS代码实现

 <div class="box" id="bb"><canvas id="cas" width="1366" height="651"></canvas></div><script type="text/javascript" charset="utf-8">var canvas = document.getElementById("cas"),ctx = canvas.getContext("2d");var x1, y1, a = 30,timeout, totimes = 100,jiange = 30;canvas.width = document.getElementById("bb").clientWidth;canvas.height = document.getElementById("bb").clientHeight;var img = new Image();img.src = "sha.jpg";img.onload = function() {ctx.drawImage(img, 0, 0, canvas.width, canvas.height)//ctx.fillRect(0,0,canvas.width,canvas)tapClip()}//通过修改globalCompositeOperation来达到擦除的效果function tapClip() {var hastouch = "ontouchstart" in window ? true : false,tapstart = hastouch ? "touchstart" : "mousedown",tapmove = hastouch ? "touchmove" : "mousemove",tapend = hastouch ? "touchend" : "mouseup";ctx.lineCap = "round";ctx.lineJoin = "round";ctx.lineWidth = a * 2;ctx.globalCompositeOperation = "destination-out";canvas.addEventListener(tapstart, function(e) {clearTimeout(timeout)e.preventDefault();x1 = hastouch ? e.targetTouches[0].pageX : e.clientX - canvas.offsetLeft;y1 = hastouch ? e.targetTouches[0].pageY : e.clientY - canvas.offsetTop;ctx.save();ctx.beginPath()ctx.arc(x1, y1, 1, 0, 2 * Math.PI);ctx.fill();ctx.restore();canvas.addEventListener(tapmove, tapmoveHandler);canvas.addEventListener(tapend, function() {canvas.removeEventListener(tapmove, tapmoveHandler);timeout = setTimeout(function() {var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);var dd = 0;for (var x = 0; x < imgData.width; x += jiange) {for (var y = 0; y < imgData.height; y += jiange) {var i = (y * imgData.width + x) * 4;if (imgData.data[i + 3] > 0) {dd++}}}if (dd / (imgData.width * imgData.height / (jiange * jiange)) < 0.4) {canvas.className = "noOp";}}, totimes)});canvas.addEventListener(tapmove, tapmoveHandler);canvas.addEventListener(tapend, function() {canvas.removeEventListener(tapmove, tapmoveHandler);timeout = setTimeout(function() {var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);var dd = 0;for (var x = 0; x < imgData.width; x += jiange) {for (var y = 0; y < imgData.height; y += jiange) {var i = (y * imgData.width + x) * 4;if (imgData.data[i + 3] > 0) {dd++}}}}, totimes)});}</script><script type="text/javascript">window.setTimeout('CountDown()', 100);// End</script>

源码获取

大家点赞、收藏、关注、评论我啦 、查看下方微信公众号获取~!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android寻找手机,寻找那些“干净”的Android手机

非原生Android系统、预装的各种第三方APP&#xff0c;都是拖慢手机运行效率和速度的“罪魁祸首”。那么&#xff0c;现在还有没有“干净”Android手机值得我们选择呢&#xff1f;为了体现“差异化”&#xff0c;绝大多数手机厂商都有自己的“OS”&#xff0c;比如MIUI、Sense等…

android 控件 margin,Android MarginDesign控件TabLayout导航栏使用详解

TabLayout的使用简单介绍比如在平常的项目中实现这样的效果&#xff0c;一般都是都会使用viewPageIndicate等几个开源框架直接实现&#xff0c;或者使用自定义的HorizontalScroll再配合ViewPageFragment实现。在谷歌推出marginDesign之后&#xff0c;实现这种效果可以直接使用T…

Web前端期末大作业--响应式有氧健身休闲会所网页设计(HTML+CSS+JavaScript)

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

android 工厂模式创建,7、Android设计模式---(创建型设计模式)抽象工厂模式

一、介绍&#xff0c;定义抽象工厂模式也是创建型模式之一&#xff0c;抽象工厂模式起源于对不同操作系统的图形化解决方案&#xff0c;如不同操作系统的按钮和文本框控件及其实现。为创建一组相关或者相互依赖的对象提供接口&#xff0c;而不需要具体指定他们的具体类。二、使…

Web前端期末大作业--响应式健身会所网页设计(HTML+CSS+JS)实现

临近期末, 你还在为HTML网页设计结课作业,HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; java项目精品实战分享案例《100套…

Web前端期末大作业-响应式室内家具网页设计(HTML+CSS+JS)实现

作者主页&#xff1a;Java李杨勇 文末获取源码联系 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c…

Java基础项目实战--大学生求职招聘信息网站系统

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

IDEA运行VUE npm install报错:chromedriver@2.27.2 install: node install.js

报错截图&#xff1a; 解决方法&#xff1a; npm install chromedriver --chromedriver_cdnurlhttp://cdn.npm.taobao.org/dist/chromedriver

C++ 比 C语言增加的新特性 3 之 命名空间namespace

1. 命名空间 1.1 命名空间 又称为“名字空间”&#xff0c;在内存&#xff08;全局&#xff09;中取一块区域并对其进行命名 实际例子&#xff1a; 同一个班级&#xff0c;两个同姓的人&#xff0c;例如&#xff1a;张三和张三&#xff0c;其中一个张三座位是在讲台右边&am…

Web前端期末大作业-响应式唯美婚庆公司网站网页设计(HTML+CSS+JavaScript)

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末,…

挑战记忆力-Web前端实现记忆纸牌游戏(JS+CSS)

游戏介绍&#xff1a; js实现扑克牌翻牌记忆小游戏代码、连续点击翻开两张扑克牌&#xff0c;相同去重&#xff0c;不同则合上重新翻&#xff0c;考验你的记忆力。 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头…

IDEA 启动、编译、clean、安装maven等、报错Process terminated

报错原因&#xff1a;找不到settings.xml 解决方法&#xff1a;

html5 写json 文件,HTML5实现本地JSON文件的读写

参考&#xff1a;使用HTML5来实现本地文件读取和写入 (FileReader读取json文件&#xff0c;FileSaver.js保存json文件)JS创建、写入、读取本地文件(txt) (ActiveXObject 这玩意根本不能用&#xff0c;IE10 和 Chrome都试了)HTML 5中的文件处理之File Writer API (FileSaver…

Vue取消eslint语法限制

启动vue项目的时候经常报一大堆错误、但是不影响项目运行、 这是因为vue对语法的限制过于严格造成的 > bblee-app1.0.0 dev /Users/bianlifeng/my-project > webpack-dev-server --inline --progress --config build/webpack.dev.conf.js95% emitting …

html5中figure怎么用,figure 和 figcaption 元素的正确使用方式

figure和figcaption是两个经常在一起使用的语义化元素。如果你还没有在规范中了解过他们&#xff0c;没有机会在项目中使用过他们&#xff0c;或者说现在对他们还是一无所知&#xff0c;这里就给大家讲一些如何正确使用他们的小技巧。figure元素经常用于图片,如下所示:figure元…

Web前端期末大作业-响应式艺术培训机构网页设计(bootstrap+HTML+CSS+JavaScript+)实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末,…

Java毕业设计--健康推广管理系统项目实战【Springboot+mybatis+layui等实现】

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#x…

为计算机新建一个用户,win10

怎样在安装Win10系统时不创建Microsoft账户怎样在安装Win10系统时不创建Microsoft账户 在安装Win10系统的过程中&#xff0c;最让用户困扰的估计就是安装过程的最后一个步骤&#xff1a;登陆Microsoft账户。很多用户既没有Microsoft账户&#xff0c;也不想用它登陆系统&#xf…

Web前端期末大作业--响应式美女健身教练瑜伽馆网页设计(HTML+CSS+JavaScript+)实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 文末获取源码联系 &#x1f345; 临近期末,…