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提升性能最佳实践小结
Dec 06 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
Sep 22 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 Javascript
avalonjs制作响应式瀑布流特效
May 06 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
BootstrapValidator不触发校验的实现代码
Sep 28 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
vue.js获取数据库数据实例代码
May 26 Javascript
react 实现页面代码分割、按需加载的方法
Apr 03 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
Feb 06 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控制网页过期时间的代码
2008/09/28 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php getsiteurl()函数
2009/09/05 PHP
php checkbox 取值详细说明
2010/08/19 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
公司董事长职责
2013/12/12 职场文书
代办社保委托书范文
2014/10/06 职场文书
2015暑假假期总结
2015/07/13 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python