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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
javascript dom 基本操作小结
Apr 11 Javascript
JS远程获取网页源代码实例
Sep 05 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
原生js实现查询天气小应用
Dec 09 Javascript
JavaScript数组去重的6个方法
Jan 21 Javascript
jQuery Position方法使用和兼容性
Aug 23 jQuery
vue2.0 中使用transition实现动画效果使用心得
Aug 13 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
May 10 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
Aug 27 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
Oct 30 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
ThinkPHP文件上传实例教程
2014/08/22 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
Python的信号库Blinker用法详解
2020/12/31 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
酒店总经理工作职责
2013/12/13 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
Python实战之OpenCV实现猫脸检测
2021/06/26 Python