使用Canvas制作刮刮乐,看看你能刮出什么奖品来?
点击上方 前端Q,关注公众号
回复加群,加入前端Q技术交流群
前言
今天在一个彩票网站看到了一个刮刮乐的效果,觉得挺有意思的就打算来仿写一个,经过一番简单的思考大概就有了基本都想法。总体效果使用Canvas制作设置抽奖概率的刮刮乐,制作过程不算繁琐,非常简单。
制作
html
一个居中的标题和刮卡区域。
<h1 style="text-align: center;">刮刮乐</h1>
<div id="ggk"><div class="jp">不抽大嘴巴子</div><canvas id="canvas" width="400" height="100"></canvas>
</div>
css
添加样式
#ggk {width: 400px;height: 100px;position: relative;left: 50%;transform: translate(-50%, 0);
}.jp,
canvas {position: absolute;width: 400px;height: 100px;left: 0;top: 0;text-align: center;font-size: 25px;line-height: 100px;color: deeppink;
}
默认
鼠标拖拽不会选中文字。
document.addEventListener("selectstart", function (e) {e.preventDefault();
})
canvas
设置Canvas画布。
let canvas = document.querySelector("#canvas");
let ctx = canvas.getContext('2d');
ctx.fillStyle = 'darkgray';
ctx.fillRect(0, 0, 400, 100);
绘制
判断鼠标是否按下。
let isDraw = false;
canvas.onmousedown = function () {isDraw = true;
}
鼠标按下isDraw为true的话,才可以涂抹,把Canvas的灰色涂抹掉。
let ggkDom = document.querySelector('#ggk');
let jp = document.querySelector('.jp');
canvas.onmousemove = function (e) {if (isDraw) {let x = e.pageX - ggkDom.offsetLeft + ggkDom.offsetWidth / 2;let y = e.pageY - ggkDom.offsetTop;ctx.beginPath();ctx.arc(x, y, 30, 0, 2 * Math.PI);ctx.globalCompositeOperation = 'destination-out';ctx.fill();ctx.closePath();}
}
鼠标弹起时,isDraw为flase
document.onmouseup = function () {isDraw = false;
}
奖品
设置奖品,p是中奖率。
let arr = [{ content: '一等奖:一个大嘴巴子', p: 0.1 },{ content: '二等奖:两个大嘴巴子', p: 0.2 },{ content: '三等奖:三个大嘴巴子', p: 0.3 }
];
创建一个随机数
let sj = Math.random();
随机数去判断,判断成功后,返回成功的值。
if (sj < arr[0].p) {jp.innerHTML = arr[0].content;
} else if (sj < arr[1].p) {jp.innerHTML = arr[1].content;
} else if (sj < arr[2].p) {jp.innerHTML = arr[2].content;
}
最后
其实使用这个还可以利用这个制作签名,绘画等功能,因为都是涂抹或者绘画东西,大概是差不多的,有兴趣可以去学习了解一下。
关于本文
来自:WebW0rld
https://juejin.cn/post/7142839691203575838
往期推荐
10 个可以副业赚钱的网站,总有一个适合你
推荐20个开源的前端低代码项目
用 Three.js 做个兔吉宝箱给大家拜个年
最后
欢迎加我微信,拉你进技术群,长期交流学习...
欢迎关注「前端Q」,认真学前端,做个专业的技术人...
点个在看支持我吧
使用Canvas制作刮刮乐,看看你能刮出什么奖品来?相关推荐
- html刮奖特效,jQuery+HTML5手机刮刮乐刮奖代码
jQuery+HTML5手机刮刮乐刮奖代码 jQuery+HTML5手机刮刮乐刮奖代码 var _htmlFontSize = (function () { var clientWidth = doc ...
- Android 自定义控件实现刮刮卡效果 真的就只是刮刮卡么
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40162163 , 本文出自:[张鸿洋的博客] 很久以前也过一个html5的刮刮卡 ...
- html根据字段制作曲线图,canvas制作简单的HTML图表,折线或者矩形统计(原创)
插件描述:canvas制作简单的HTML图表,折线或者矩形统计 使用canvas制作简单的HTML图表,折线或者矩形统计. 使用canvas制作简单的HTML图表,折线或者矩形统计,简单而实用.图形由 ...
- [译]怎样用HTML5 Canvas制作一个简单的游戏
这是我翻译自LostDecadeGames主页的一篇文章,原文地址:How To Make A Simple HTML5 Canvas Game. 下面是正文: 自从我制作了一些HTML5游戏(例如C ...
- html制作动态坐标轴,HTML5 canvas制作动态随机星图
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 本篇将会介绍如何用canvas制作动态随机移动的星图啦啦啦 小白在远离小白道路上的第一步就是搭个博客 前言 这次的博文不 ...
- Canvas制作的下雨动画
简介 在codepen上看到一个Canvas做的下雨效果动画,感觉蛮有意思的.就研究了下,这里来分享下,实现技巧.效果可以见下面的链接. 霓虹雨: http://codepen.io/natewile ...
- [html] 使用canvas制作一个印章
[html] 使用canvas制作一个印章 <!DOCTYPE html> <html lang="en"> <head><meta ch ...
- html制作状态栏数字时钟,html5 canvas制作15种数字时钟样式代码
特效描述:html5 canvas制作 数字时钟样式.html5 canvas数字时钟代码 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 clockd1_={ "indic ...
- 飞机大战HTML5游戏源码,基于Canvas制作的网页版飞机大战游戏+飞机大战手机端
简介: 飞机大战HTML5游戏源码是一款基于Canvas制作的网页版飞机大战游戏,画质精美的飞机大战手机端游戏源码 网盘下载地址: http://kekewangLuo.net/W1S2LQcqAT2 ...
最新文章
- 世界首部AI创作漫画正式发表:StyleGAN神还原《铁臂阿童木》画风,继承手冢治虫衣钵...
- 准备搭建经营分析前端试验型平台
- Material Design控件使用学习 TabLayout+SwipeRefreshlayout
- Win2003下Exchange2003部署图解之六
- 树莓派一键备份脚本 备份为img镜像 可用于量产 可选备份位置 适配Debian/Ubuntu
- 开发运维效率提升 80%,计算成本下降 50%,分众传媒的 Serverless 实践
- php接收arduino向服务器发来的请求
- openresty 环境搭建
- Python可变参数、关键字参数及命名关键字参数
- 软件_搭建rtsp视频推送环境
- python查看函数源代码
- 德语翻译器在线翻译中文-德语翻译器支持各大语言翻译
- 傅里叶分析原理——非常好的一篇讲解文章
- 曝光!中国知名互联网公司背后的风投
- Nmap扫描和识别服务
- Android 拍照、选择图片并裁剪
- 资深SRE带你看阿里云香港故障
- 省份对应拼音(MicroStrategy)
- 微信小程序云开发学习指南(一)
- javascript中函数参数是evt详解
热门文章
- 领导提拔你,还是干掉你,从来都不是看能力!
- halcon_halcon图像处理基本运算
- javascript组合模式创建对象
- 壹度婚礼邀请函请帖小程序免费制作
- EFR32 gecko 2生产烧录
- 小学计算机课教师教学笔记,小学信息技术教师读书笔记
- Could not find a version that satisfies the requirement cryptography (from pymysql) (from versions:
- 传感器采集数据 Python123
- CDS TABLE FUNCTOIN传参,指定客户端
- 【目标跟踪】基于UKF实现自行车状态估计含Matlab源码