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 相关文章推荐
JS event使用方法详解
Apr 28 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
Sep 04 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 Javascript
使用Vue实现图片上传的三种方式
Jul 17 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
webpack4从0搭建组件库的实现
Nov 29 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
js实现圆盘记速表
2015/08/03 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
js实现选项卡效果
2020/03/07 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
解决python写的windows服务不能启动的问题
2014/04/15 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
python 串行执行和并行执行实例
2020/04/30 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
在校生钳工实习自我鉴定
2013/09/19 职场文书
中学生在校期间的自我评价分享
2013/11/13 职场文书
大专学生推荐信范文
2013/11/19 职场文书
中层干部培训方案
2014/06/16 职场文书
初中学习计划书范文
2014/09/15 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
倡议书格式及范文
2015/04/29 职场文书
全陪导游词开场白
2015/05/29 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
Web应用开发TypeScript使用详解
2022/05/25 Javascript
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers