原生JavaScript实现刮刮乐


Posted in Javascript onSeptember 29, 2020

本文实例为大家分享了JavaScript实现刮刮乐的具体代码,供大家参考,具体内容如下

原理

鼠标按住移动的时候,实现刮刮乐的效果,那就是鼠标按下的同时鼠标移动,那就清除画布。松开鼠标,鼠标移动不再清除画布了,那就得清除事件。

canvas画布

1、获取画布元素

var canvas = document.getElementById('canvas');

2、获取绘图对象getContext

var ctx = canvas.getContext('2d');

3、画线

ctx.lineWidth = 3;//线宽
ctx.strokeStyle = 'red';//线条颜色
//开始的位置 moveTo(x,y);
//结束的位置lineTo(x,y)
//执行stroke()

4、矩形ctx.rect(x,y,width,height);

ctx.rect(0,0,300,150);
ctx.fillStyle = '#ccc';//填充的颜色
ctx.fill();//执行
ctx.clearRect(e.clientX,e.clientY,20,20);//清除矩形

页面

1、页面结构

<canvas id="canvas" width="300" height="150" style="border: 1px solid #ccc;"></canvas>
<div class="prize">谢谢惠顾</div>

2、样式

.prize {
 width: 300px;
 height: 150px;
 text-align: center;
 line-height: 150px;
 margin-top:-150px;
 color: red;
 font-size: 20px;
}

3、动画

//获取画布元素
 var canvas = document.getElementById('canvas');
 // 获取绘图对象
 var ctx = canvas.getContext('2d');
 ctx.lineWidth = 3;//线宽
 ctx.strokeStyle = 'red';//线条颜色
 //开始的位置 moveTo(x,y);
 //结束的位置lineTo(x,y)
 //执行stroke()

 //矩形
 ctx.rect(0,0,300,150);
 ctx.fillStyle = '#ccc';//填充的颜色
 ctx.fill();//执行
 ctx.clearRect(e.clientX,e.clientY,20,20);
 // 按下
 canvas.onmousedown = function (e){
  //移动
  canvas.onmousemove = function (e) {
   // ctx.lineTo(e.clientX,e.clientY);
   // ctx.lineTo(100,100)
   // ctx.stroke();
   ctx.clearRect(e.clientX,e.clientY,20,20);//清除
  }
 }
 canvas.onmouseup = function (e) {
  canvas.onmousemove = null;
 }
 // 改变中奖信息
 var arr = ['一个亿','现金500','100元话费','腾讯视频VIP月卡','谢谢惠顾'],
  prize = document.querySelector('.prize'),
  random = Math.floor(Math.random()*arr.length);
 prize.innerText = arr[random];

完整源码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
  /*----------js刮刮乐------------*/
  .prize {
   width: 300px;
   height: 150px;
   text-align: center;
   line-height: 150px;
   margin-top:-150px;
   color: red;
   font-size: 20px;
  }
 </style>
</head>
<body>
<!--js刮刮乐-->
<canvas id="canvas" width="300" height="150" style="border: 1px solid #ccc;"></canvas>
<div class="prize">谢谢惠顾</div>

<script>
 // ------------js刮刮乐-----------
 //获取画布元素
 var canvas = document.getElementById('canvas');
 // 获取绘图对象
 var ctx = canvas.getContext('2d');
 ctx.lineWidth = 3;//线宽
 ctx.strokeStyle = 'red';//线条颜色
 //开始的位置 moveTo(x,y);
 //结束的位置lineTo(x,y)
 //执行stroke()

 //矩形
 ctx.rect(0,0,300,150);
 ctx.fillStyle = '#ccc';//填充的颜色
 ctx.fill();//执行
 ctx.clearRect(e.clientX,e.clientY,20,20);
 // 按下
 canvas.onmousedown = function (e){
  //移动
  canvas.onmousemove = function (e) {
   // ctx.lineTo(e.clientX,e.clientY);
   // ctx.lineTo(100,100)
   // ctx.stroke();
   ctx.clearRect(e.clientX,e.clientY,20,20);//清除
  }
 }
 canvas.onmouseup = function (e) {
  canvas.onmousemove = null;
 }
 // 改变中奖信息
 var arr = ['一个亿','现金500','100元话费','腾讯视频VIP月卡','谢谢惠顾'],
  prize = document.querySelector('.prize'),
  random = Math.floor(Math.random()*arr.length);
 prize.innerText = arr[random];
 // ------------js刮刮乐-----------
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery使用手册之 事件处理
Mar 24 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
Oct 29 Javascript
javascript图像处理—仿射变换深度理解
Jan 16 Javascript
document.all的一个比较完整的总结及案例
Jan 31 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
jQuery实现自定义事件的方法
Apr 17 Javascript
CSS3 media queries结合jQuery实现响应式导航
Sep 30 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
Sep 14 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
快速解决vue-cli在ie9+中无效的问题
Sep 04 Javascript
原生JavaScript实现拖动校验功能
Sep 29 #Javascript
使用JavaScript实现贪吃蛇游戏
Sep 29 #Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
Sep 29 #Javascript
Openlayers3实现车辆轨迹回放功能
Sep 29 #Javascript
vue 验证两次输入的密码是否一致的方法示例
Sep 29 #Javascript
JS中队列和双端队列实现及应用详解
Sep 29 #Javascript
js实现贪吃蛇游戏(简易版)
Sep 29 #Javascript
You might like
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
纯php生成随机密码
2015/10/30 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
bootstrap table实例详解
2017/01/06 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
python检测服务器端口代码实例
2019/08/31 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
python 命名规范知识点汇总
2020/02/14 Python
Python编写万花尺图案实例
2021/01/03 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
《童年》教学反思
2014/02/18 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
党的生日演讲稿
2014/09/10 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
教师节简报
2015/07/20 职场文书
初中政教处工作总结
2015/08/12 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python