原生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 相关文章推荐
javascript真的不难-回顾一下基础知识
Jan 15 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
JavaScript中使用Object.create()创建对象介绍
Dec 30 Javascript
JS DOMReady事件的六种实现方法总结
Nov 23 Javascript
js实现下拉菜单效果
Mar 01 Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 jQuery
jQuery length 和 size()区别总结
Apr 26 jQuery
详解Vue源码学习之callHook钩子函数
Jul 25 Javascript
vue实现扫码功能
Jan 17 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
vue element ui validate 主动触发错误提示操作
Sep 21 Javascript
JS实现放大镜效果
Sep 21 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调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
javascript 函数使用说明
2010/04/07 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python实现完整的事务操作示例
2017/06/20 Python
python实现猜单词小游戏
2020/05/22 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
linux环境下Django的安装配置详解
2019/07/22 Python
使用Python实现音频双通道分离
2020/12/25 Python
关于Python错误重试方法总结
2021/01/03 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
班组长工作职责
2013/12/25 职场文书
植物生产学专业求职信
2014/08/08 职场文书
企业公益活动策划方案
2014/08/24 职场文书
客户答谢会致辞
2015/07/30 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android