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 Ajax之load()方法
Oct 12 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
浅谈jQuery.easyui的datebox格式化时间
Jun 25 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
javascript中apply/call和bind的使用
Feb 15 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
详解KOA2如何手写中间件(装饰器模式)
Oct 11 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
一文帮你理解PReact10.5.13源码
Apr 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学习笔记 数组的常用函数
2011/06/13 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
Python实现的随机森林算法与简单总结
2018/01/30 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
centos7之Python3.74安装教程
2019/08/15 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
python 制作本地应用搜索工具
2021/02/27 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
淘宝中秋节活动方案
2014/01/31 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
横空出世观后感
2015/06/09 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书