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 相关文章推荐
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
jquery 卷帘效果实现代码(不同方向)
Feb 05 Javascript
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 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
介绍几个array库的新函数 php
2006/12/29 PHP
php下使用SMTP发邮件的代码
2008/01/10 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
加热夹克:RAVEAN
2018/10/19 全球购物
本科毕业自我鉴定
2014/03/20 职场文书
爱国主义演讲稿
2014/05/07 职场文书
社区禁毒工作方案
2014/06/02 职场文书
房屋维修协议书范本
2014/09/25 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
大学军训口号大全
2015/12/24 职场文书
委托书范本格式
2019/04/18 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android