原生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 相关文章推荐
[IE&amp;FireFox兼容]JS对select操作
Jan 07 Javascript
基于JQuery的一句代码实现表格的简单筛选
Jul 26 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
js实现拖拽 闭包函数详细介绍
Nov 25 Javascript
JS实现距离上次刷新已过多少秒示例
May 23 Javascript
node.js中的http.get方法使用说明
Dec 14 Javascript
JS iFrame加载慢怎么解决
May 13 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
webpack配置导致字体图标无法显示的解决方法
Mar 06 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 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
SONY SRF-M100的电路分析
2021/03/02 无线电
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
谈谈python中GUI的选择
2018/03/01 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
Python操作qml对象过程详解
2019/09/26 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
应征英语教师求职信
2013/11/27 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
行政求职信
2014/07/04 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
先进工作者事迹材料
2014/12/23 职场文书