canvas实现刮刮卡效果
发布时间 - 2026-01-11 00:09:59 点击率:次目前在html5和css3的热潮下,html页面的效果也是层出不穷,下面我们来介绍使用canvas来模仿刮奖刮开效果。

原理
在需要刮出的图片或者文字上方盖上一层灰色或者其他背景的canvas画布,当手指或者鼠标点击画布并移动时,将画布上移动过的轨迹变成透明即可。
分析
demo中在class为content的div上盖上一层灰色的画布,然后通过获取鼠标和手指的坐标计算出在画布位置上的坐标,通过在坐标原点位置画一个半径10px的透明圆形来透过画布,显示出画布下的内容。本demo是用时需要改变的内容为_width,_height,touchTop,touchLeft这几个参数,根据自身画布的位置自行计算即可。由于是长按事件,记得在移动端阻止浏览器默认功能。
效果图:
图(1)初始图
图(2)刮开效果
代码如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" />
<style>
.content,.cover{width:400px; height:400px; position:absolute; left:50%; top:50%; margin:-200px 0 0 -200px;}
.content{ font-size:48px; line-height:400px; text-align:center;}
h3{ text-align:center; line-height:200px;}
</style>
</head>
<body>
<h3>快来刮开!!!</h3>
<div class="content" >中奖啦~!</div>
<canvas id="cover" class="cover" width="400" height="400"></canvas>
</body>
<script>
var isdown = false,
cover = document.getElementById("cover"),
covercanvas = cover.getContext("2d");
//
covercanvas.fillStyle="transparent";
covercanvas.fillRect(0,0,400,400);
function fillter( canvas ){
canvas.fillStyle="#ccc";
canvas.fillRect(0,0,400,400);
}
function isDown(e){
e.preventDefault();
isdown=true;
}
function isUp(e){
isdown=false;
}
function draw( e ){
e.preventDefault();
if(isdown){
if(e.changedTouches){
e=e.changedTouches[e.changedTouches.length-1];
}
var _height= parseInt((window.innerHeight-400)/2),
_width= parseInt((window.innerWidth-400)/2),
touchTop=e.clientY - _height,
touchLeft=e.clientX - _width;
with(covercanvas){
beginPath();
arc(touchLeft, touchTop, 10, 0, Math.PI * 2);
fill();
}
}
//alert(touchTop);
}
fillter(covercanvas);
covercanvas.globalCompositeOperation = 'destination-out';
cover.addEventListener('touchstart',isDown);
cover.addEventListener('touchmove',draw);
cover.addEventListener('touchend',isUp);
cover.addEventListener('mousemove',draw);
cover.addEventListener('mousedown',isDown);
cover.addEventListener('mouseup',isUp);
</script>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# canvas实现刮奖效果
# 刮刮卡效果
# canvas
# 刮刮卡
# 利用HTML5的画布Canvas实现刮刮卡效果
# javascript+canvas实现刮刮卡抽奖效果
# jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
# 手机端js和html5刮刮卡效果
# js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
# canvas绘制刮刮卡效果
# 鼠标
# 快来
# 这几个
# 或者其他
# 层出不穷
# 出在
# 上一层
# 无标题文档
# 画一
# 鼠标点击
# 上盖
# viewport
# title
# gt
# doctype
# lt
# head
# utf
# charset
# meta
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何做网站制作流程,*游戏网站怎么搭建?
如何在万网自助建站中设置域名及备案?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
,南京靠谱的征婚网站?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
微信小程序 HTTPS报错整理常见问题及解决方案
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何用低价快速搭建高质量网站?
如何在Windows虚拟主机上快速搭建网站?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何用花生壳三步快速搭建专属网站?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何配置任务调度?(Cron Job示例)
如何在腾讯云服务器上快速搭建个人网站?
Firefox Developer Edition开发者版本入口
英语简历制作免费网站推荐,如何将简历翻译成英文?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
SQL查询语句优化的实用方法总结
高端网站建设与定制开发一站式解决方案 中企动力
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
JavaScript模板引擎Template.js使用详解
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
如何快速使用云服务器搭建个人网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
济南网站建设制作公司,室内设计网站一般都有哪些功能?
*服务器网站为何频现安全漏洞?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
如何为不同团队 ID 动态生成多个独立按钮
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
网站制作软件有哪些,制图软件有哪些?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
北京网站制作公司哪家好一点,北京租房网站有哪些?
网站图片在线制作软件,怎么在图片上做链接?
BootStrap整体框架之基础布局组件
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何快速生成凡客建站的专业级图册?
音响网站制作视频教程,隆霸音响官方网站?
如何在阿里云ECS服务器部署织梦CMS网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何快速搭建高效WAP手机网站吸引移动用户?
如何在搬瓦工VPS快速搭建网站?
在Oracle关闭情况下如何修改spfile的参数
Laravel如何实现文件上传和存储?(本地与S3配置)

