js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS


Posted in Javascript onNovember 18, 2013

绝对值得看的来篇,哈哈。本人亲自完成,有错误请大家指出:
现在的手机完美支持html5,所以如果手机端想要做个抽奖模块的话,用刮刮卡抽奖效果,相信这个互动体验是非常棒的
​ps:由于本人没有wp8系统的手机,所以没法兼容wp8系统的,目前完美兼容android,IOS
如果要在pc浏览的话,得改下js,目前支持谷歌,火狐,ie>=10,如果网友想要的话我就去写个
代码如下:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" /> 
<title>eraser effect</title> 
<script type="text/javascript" src="jquery.core.js"></script> 
<style> 
#canvas { 
background:url(winning-ticket.jpg);<!--奖品图片--> 
width: 531px; 
height: 438px; 
} 
.before{ 
background:none !important; 
} 
#canvas canvas { 
cursor: url("hand.png") 0 0, auto;<!--PC端的手势图片--> 
} 
</style> 
</head> 
<body oncontextmenu="return false;" onselectstart="return false;"> 
<div id="canvas"></div> 
</body> 
<script type="text/javascript"> 
(function() { 
window.onload = function(){ 
/**判断浏览器是否支持canvas**/ 
try{ 
document.createElement('canvas').getContext('2d'); 
}catch(e){ 
var addDiv = document.createElement('div'); 
alert('您的手机不支持刮刮卡效果哦~!'); 
} 
}; 
var u = navigator.userAgent,mobile = ''; 
if(u.indexOf('iPhone') > -1) mobile = 'iphone'; 
if(u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) mobile = 'Android'; 
function createCanvas(parent, width, height) { 
var canvas = {}; 
canvas.node = document.createElement('canvas'); 
canvas.context = canvas.node.getContext('2d'); 
canvas.node.width = width || 100; 
canvas.node.height = height || 100; 
parent.appendChild(canvas.node); 
return canvas; 
} 
function init(container, width, height, fillColor, type) { 
var canvas = createCanvas(container, width, height); 
var ctx = canvas.context; 
// define a custom fillCircle method 
ctx.fillCircle = function(x, y, radius, fillColor) { 
this.fillStyle = fillColor; 
this.beginPath(); 
this.moveTo(x, y); 
this.arc(x, y, radius, 0, Math.PI * 2, false); 
this.fill(); 
}; 
ctx.clearTo = function(fillColor) { 
ctx.fillStyle = fillColor; 
ctx.fillRect(0, 0, width, height); 
}; 
ctx.clearTo(fillColor || "#ddd"); 
canvas.node.addEventListener("touchstart",function(e){ 
canvas.isDrawing = true; 
},false); 
canvas.node.addEventListener("touchend",function(e){ 
canvas.isDrawing = false; 
},false); 
canvas.node.addEventListener("touchmove",function(e){ 
if (!canvas.isDrawing) { 
return; 
} 
if(type == 'Android'){ 
var x = e.changedTouches[0].pageX - this.offsetLeft; 
var y = e.changedTouches[0].pageY - this.offsetTop; 
}else{ 
var x = e.pageX - this.offsetLeft; 
var y = e.pageY - this.offsetTop; 
} 
var radius = 20; 
var fillColor = '#ff0000'; 
ctx.globalCompositeOperation = 'destination-out'; 
ctx.fillCircle(x, y, radius, fillColor); 
},false); 
} 
var container = document.getElementById('canvas'); 
init(container, 531, 438, '#ff0000', mobile); 
})(); 
</script> 
</html>
Javascript 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
document.getElementById介绍
Sep 13 Javascript
js操作iframe的一些方法介绍
Jun 25 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
Aug 15 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
Oct 16 Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 Javascript
JavaScript箭头(arrow)函数详解
Jun 04 Javascript
深入浅析Vue.js计算属性和侦听器
May 05 Javascript
vue ajax 拦截原理与实现方法示例
Nov 29 Javascript
详解vue中$nextTick和$forceUpdate的用法
Dec 11 Javascript
小程序Scroll-view上拉滚动刷新数据
Jun 21 Javascript
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
基于javascript滚动图片具体实现
Nov 18 #Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 #Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
Nov 18 #Javascript
Jquery取得iframe下内容的方法
Nov 18 #Javascript
JavaScript实现的日期控件具体代码
Nov 18 #Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 #Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 #Javascript
You might like
Discuz! Passport 通行证整合
2008/03/27 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
PHP递归创建多级目录
2015/11/05 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
vue 实现单选框设置默认选中值
2019/11/07 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python实现感知机(PLA)算法
2017/12/20 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
服装店营销方案
2014/03/10 职场文书
个人收入证明范本
2014/09/18 职场文书
检讨书1000字
2014/10/11 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
金榜题名主持词
2015/07/02 职场文书
老兵退伍感言
2015/08/03 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS