原生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 相关文章推荐
js 如何实现对数据库的增删改查
Nov 23 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 Javascript
简单实现限制uploadify上传个数
Nov 16 Javascript
Angular的事件和表单详解
Dec 26 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
浅谈JS如何实现真正的对象常量
Jun 25 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
JS实现遍历不规则多维数组的方法
Mar 21 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
Webpack按需加载打包chunk命名的方法
Sep 22 Javascript
JS立即执行的匿名函数用法分析
Nov 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昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
使用python生成目录树
2018/03/29 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python实现手势识别的示例(入门)
2020/04/15 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
JSF的标签库有哪些
2012/04/27 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
就业意向书
2014/07/29 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS