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 相关文章推荐
javascript Object与Function使用
Jan 11 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
JS多物体 任意值 链式 缓冲运动
Aug 10 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
js获得页面的高度和宽度的方法
Feb 23 Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
Apr 26 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
Apr 20 Javascript
JavaScript使用Ajax上传文件的示例代码
Aug 10 Javascript
ant design实现圈选功能
Dec 17 Javascript
JavaScript监听键盘事件代码实现
Jun 03 Javascript
基于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
php+mysql分页代码详解
2008/03/27 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
Position属性之relative用法
2015/12/14 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
用django设置session过期时间的方法解析
2019/08/05 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
Python实现自动访问网页的例子
2020/02/21 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
幼师专业求职推荐信
2013/11/08 职场文书
毕业生自荐书
2013/12/18 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
致百米运动员广播稿
2014/01/29 职场文书
运动与健康自我评价
2015/03/09 职场文书
早恋主题班会
2015/08/14 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL