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 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
MooTools 1.2介绍
Sep 14 Javascript
监控 url fragment变化的js代码
Apr 19 Javascript
js当一个变量为函数时 应该注意的一点细节小结
Dec 29 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
百度多文件异步上传控件webuploader基本用法解析
Nov 07 Javascript
简单实现js上传文件功能
Aug 21 Javascript
vue通过路由实现页面刷新的方法
Jan 25 Javascript
使用Angular CLI生成路由的方法
Mar 24 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
如何构建一个Vue插件并生成npm包
Oct 26 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
百度地图API使用方法详解
2015/08/25 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
js no-repeat写法 背景不重复
2009/03/18 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python 处理数据的实例详解
2017/08/10 Python
Python AES加密实例解析
2018/01/18 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
中科软测试工程师面试题
2012/06/16 面试题
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
机电一体化职业规划书
2014/01/07 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
班班通项目实施方案
2014/02/25 职场文书
公司股权转让协议书
2014/04/12 职场文书
异地年检委托书范本
2014/09/24 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
TS 类型兼容教程示例详解
2022/09/23 Javascript