原生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 相关文章推荐
ExtJS 2.0 实用简明教程之布局概述
Apr 29 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
Aug 12 Javascript
手机端页面rem宽度自适应脚本
May 20 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
Oct 10 Javascript
jQuery如何获取动态添加的元素
Jun 24 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 Javascript
JavaScript实现星星等级评价功能
Mar 22 Javascript
JavaScript实现弹出广告功能
Mar 30 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
微信小程序云开发 生成带参小程序码流程
May 18 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
AJAX的使用方法详解
2017/04/29 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
js实现仿购物车加减效果
2017/03/01 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
python新手经常遇到的17个错误分析
2014/07/30 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Python3+Appium安装使用教程
2019/07/05 Python
python实现倒计时小工具
2019/07/29 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
Python socket聊天脚本代码实例
2020/01/02 Python
python中常见错误及解决方法
2020/06/21 Python
python批量生成条形码的示例
2020/10/10 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
ktv收银员岗位职责
2013/12/16 职场文书
幼儿教师考核制度
2014/01/25 职场文书
竞聘书模板
2014/03/31 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
企业战略合作意向书
2015/05/08 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
Python字符串常规操作小结
2022/04/03 Python