原生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团队打造的javascript单元测试工具QUnit介绍
Feb 26 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
jquery复选框checkbox实现删除前判断
Apr 20 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
JS学习之表格的排序简单实例
May 16 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
详解Javascript获取缓存和清除缓存API
May 25 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 Javascript
详解原生JS回到顶部
Mar 25 Javascript
JavaScript 链表定义与使用方法示例
Apr 28 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与C#分别格式化文件大小的代码
2011/05/14 PHP
php实现文件编码批量转换
2014/03/10 PHP
php之readdir函数用法实例
2014/11/13 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
jQuery 操作XML入门
2008/12/25 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
20行python代码实现人脸识别
2019/05/05 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
医学专业毕业生个人的求职信
2013/12/04 职场文书
招商业务员岗位职责
2013/12/16 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
小学课外阅读总结
2014/07/09 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android