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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
JavaScript实现表格排序方法
Jun 14 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
JS判断移动端访问设备并加载对应CSS样式
Jun 13 Javascript
调试JavaScript中正则表达式中遇到的问题
Jan 27 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
Mar 02 Javascript
javascript基础知识
Jun 07 Javascript
Javascript之Math对象详解
Jun 07 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 Vue.js
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
我的论坛源代码(八)
2006/10/09 PHP
一个简易需要注册的留言版程序
2006/10/09 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
php生成圆角图片的方法
2015/04/07 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
浅谈js原生拖放
2016/11/21 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
Python数组条件过滤filter函数使用示例
2014/07/22 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python编程实现正则删除命令功能
2017/08/30 Python
vscode 远程调试python的方法
2017/12/01 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
explicit和implicit的含义
2012/11/15 面试题
值传递还是引用传递
2015/02/08 面试题
阳光体育运动标语口号
2015/12/26 职场文书
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL