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等…

人人开源 VUE项目报错./src/assets/scss/index.scssModule build failed: Error: ENOENT: no such file or direct

Module build failed: Error: ENOENT: no such file or directory, scandir ‘C:\Users\administrator\Desktop\renren-fast-vue\node_modules\node-sass\vendor’ at Object.fs.readdirSync (fs.js:861:3) at Object.getInstalledBinaries (C:\Users\xyy’s\Desktop\renren-fa…

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…

html htc控件详解,*.HTC 文件的简单介绍-网页设计,HTML/CSS

今天在论坛上面看到有些兄弟不知道htc是什么东西。小生在这里稍微说一下。从5.5版本开始&#xff0c;internet explorer(ie)开始支持web 行为的概念。这些行为是由后缀名为.htc的脚本文件描述的&#xff0c;它们定义了一套方法和属性&#xff0c;程序员几乎可以把这些方法和属性…

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

写得好的html网页,优化网站排名-使用Markdown编写更好的内容和HTML

1.内容创作的悲剧因此&#xff0c;首先您必须了解&#xff1a;内容创建的一个巨大悲剧是HTML。如果你是一位作家、制片人或类似的人&#xff0c;你在创作内容时&#xff0c;总是会遇到这样的问题&#xff1a;想要让博客文章现场直播&#xff0c;或者想要获得网页直播&#xff0…

升级vue-cli

执行命令 npm install -g

大学计算机基础知识判断题,大学计算机基础学习知识判断题.doc

,.序号题目描述您的选择1E-mail?是指利用计算机网络及时地向特定对象传送文字、声音、图像或图形的一种通讯方式。对错2在Internet?上&#xff0c;每个网络和主机的IP?地址是都可以是两个以上。对错3通过设置相应的邮件规则可以进行邮件过滤。对错4IP?地址是给每个连接在In…

VUE报错:Module build failed: Error: Cannot find module ‘node-sass‘

报错代码&#xff1a; Module build failed: Error: Cannot find module node-sassat Function.Module._resolveFilename (module.js:548:15)at Function.Module._load (module.js:475:25)at Module.require (module.js:597:17)at require (internal/module.js:11:18) 解决方…

2021计算机专业考408的学校,2021考研:计算机考研408是什么?统考学校有哪些?...

到底计算机考研408是怎么样的。第一&#xff0c;什么学校考408&#xff0c;大部分985和少部分211第二&#xff0c;难度怎么样&#xff0c;确实难度很大&#xff0c;我没考过其他工科&#xff0c;不知道是不是最难。但是我想说的是考过的大部分都说特别难&#xff0c;一般考890不…

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网页设计结课作业,老师的作业要求感到头…

html中form标签的作用style,HTML5中meta常用标签属性说明

HTML5中meta常用标签属性说明IE 兼容模式&#xff0c;Bootstrap 不支持 IE 古老的兼容模式。为了让 IE 浏览器运行最新的渲染模式下&#xff0c;建议将此 标签加入到你的页面中&#xff1a;content属性值 :width:可视区域的宽度&#xff0c;值可为数字或关键词device-widthhei…