20行JS代码实现网页刮刮乐效果


Posted in Javascript onJune 23, 2017

分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码

效果如下

20行JS代码实现网页刮刮乐效果

盖伦.jpg

20行JS代码实现网页刮刮乐效果

刮刮乐.gif

HTML部分

<body>
  ![](img/gailun.jpg)
  <canvas id="canvas" width="400" height="300"></canvas>
 </body>

没什么要特别注意的

为了效果加了些CSS样式

CSS部分

<style type="text/css">
  *{
   margin: 0;
   padding: 0;
  }
   img{
    width: 400px;
    height: 300px;
    left: 200px;
    position: absolute;
    z-index: -1;
   }
   canvas{
    margin-left:200px;
   }
  </style>

注意

1.为了清除浏览器自带效果加了

*{
   margin: 0;
   padding: 0;
  }

2.img需要在灰布下面,加了z-index;

3.图片绝对定位

js部分

分析下逻辑

1.鼠标按下移动相应区域刮开

2.鼠标抬起改变鼠标位置不接着刮开

js代码

<script type="text/javascript">
  var canvas = document.getElementById("canvas");
  var context = canvas.getContext('2d');
   //画蒙布
  context.beginPath();
  context.fillStyle= 'grey'
  context.fillRect(0,0,400,300);
  //鼠标按下开刮
  canvas.onmousedown=function(){
   canvas.onmousemove = function(){
    //获取鼠标坐标
    var x = event.clientX;
    var y = event.clientY;
    //destination-out    显示原来的不在后来区域的部分
    context.globalCompositeOperation = "destination-out";
    context.beginPath();
    context.arc(x-200,y,30,0,Math.PI*2);
    context.fill();  
   }
  }
  //鼠标抬起不刮开
  canvas.onmouseup=function(){
   canvas.onmousemove = function(){ 
   }
  } 
  </script>

需要注意的是

1.图片和画布左移了200px,所以圆的起点坐标相对于获取位置减了200px;

2.globalCompositeOperation是画布的一个功能作用是设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上,还有其余10种写法

以上这篇20行JS代码实现网页刮刮乐效果就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
Mar 04 Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
jQuery快速实现商品数量加减的方法
Feb 06 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
jQuery实现简单的抽奖游戏
May 05 jQuery
EasyUI的TreeGrid的过滤功能的解决思路
Aug 08 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
w3c编程挑战_初级脚本算法实战篇
Jun 23 #Javascript
微信小程序 获取二维码实例详解
Jun 23 #Javascript
详谈表单格式化插件jquery.serializeJSON
Jun 23 #jQuery
angularJs的ng-class切换class
Jun 23 #Javascript
关于使用js算总价的问题
Jun 23 #Javascript
angular select 默认值设置方法
Jun 23 #Javascript
获取当前按钮或者html的ID名称实例(推荐)
Jun 23 #Javascript
You might like
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
php遍历CSV类实例
2015/04/14 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
javascript 闭包疑问
2010/12/30 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Python操作Jira库常用方法解析
2020/04/10 Python
python如何删除文件、目录
2020/06/23 Python
python如何停止递归
2020/09/09 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
园林施工员岗位职责
2013/12/11 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang