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 相关文章推荐
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
JavaScript中匿名函数的用法及优缺点详解
Jun 01 Javascript
JavaScript函数节流概念与用法实例详解
Jun 20 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
小程序新版订阅消息模板消息
Dec 31 Javascript
Java无向树分析 实现最小高度树
Apr 09 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
PHP 数组基础知识小结
2010/08/20 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
Vuex提升学习篇
2018/01/11 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
班组长安全工作职责
2014/07/15 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
幼师辞职信范文
2015/02/27 职场文书
诚实守信主题班会
2015/08/13 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫