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 文件夹选择框的两种解决方案
Jul 01 Javascript
javascript 异步页面查询实现代码(asp.net)
May 26 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
瀑布流布局代码一例
Apr 11 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
May 11 Javascript
vue的diff算法知识点总结
Mar 29 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
Jan 22 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
php curl模拟post请求小实例
2013/11/13 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
validator验证控件使用代码
2010/11/23 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
JS设计模式之惰性模式(二)
2017/09/29 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
vue3实现v-model原理详解
2019/10/09 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
Django 路由系统URLconf的使用
2018/10/11 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python 解压pkl文件的方法
2018/10/25 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
Python适配器模式代码实现解析
2019/08/02 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
《我不是最弱小的》教学反思
2014/02/23 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS