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知识点收藏
Feb 22 Javascript
各种效果的jquery ui(接口)介绍
Sep 17 Javascript
js下用层来实现select的title提示属性
Feb 23 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
老生常谈JavaScript数组的用法
Jun 10 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
Node.js进阶之核心模块https入门
May 23 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
Dec 12 Javascript
详解Vue前端对axios的封装和使用
Apr 01 Javascript
vue开发中遇到的问题总结
Apr 07 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 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/12/02 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
Python实现OpenCV的安装与使用示例
2018/03/30 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
通过python爬虫赚钱的方法
2019/01/29 Python
简单了解django orm中介模型
2019/07/30 Python
python多线程与多进程及其区别详解
2019/08/08 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
keras 权重保存和权重载入方式
2020/05/21 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
环保建议书100字
2014/05/14 职场文书
品酒会策划方案
2014/05/26 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技