原生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 相关文章推荐
window.addeventjs事件驱动函数集合addEvent等
Feb 19 Javascript
jQuery实现长文字部分显示代码
May 13 Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 Javascript
js实现索引图片切换效果
Nov 21 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 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学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
解决vue点击控制单个样式的问题
2018/09/05 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
python散点图实例之随机漫步
2018/08/27 Python
python如何实现视频转代码视频
2019/06/17 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
售后服务经理岗位职责
2014/02/25 职场文书
大学生心理活动总结
2014/07/04 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
2015年科室工作总结
2015/04/10 职场文书
银行稽核岗位职责
2015/04/13 职场文书
道歉信范文
2015/05/12 职场文书
学生病假条范文
2015/08/17 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
MongoDB支持的索引类型
2022/04/11 MongoDB
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android