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 相关文章推荐
Javascript的数组与字典用法与遍历对象的属性技巧
Nov 07 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
Javascript基础教程之数据类型 (数值 Number)
Jan 18 Javascript
JQuery工具函数汇总
Jun 15 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
vue实现城市列表选择功能
Jul 16 Javascript
vue监听对象及对象属性问题
Aug 20 Javascript
elementUI select组件value值注意事项详解
May 29 Javascript
js设计模式之代理模式及订阅发布模式实例详解
Aug 15 Javascript
超详细小程序定位地图模块全系列开发教学
Nov 24 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 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
深入理解PHP内核(一)
2015/11/10 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
pyqt5简介及安装方法介绍
2018/01/31 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
python 实现A*算法的示例代码
2018/08/13 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
is_file和file_exists效率比较
2021/03/14 PHP
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
高中学生期末评语
2014/04/25 职场文书
导师推荐信范文
2014/05/09 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
运动会加油稿50字
2015/07/21 职场文书
入党转正申请书范文
2019/05/20 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript