touch插件
第一种:
<script>
(function($) {var options, Events, Touch;options = {x: 20,y: 20};Events = ['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'tap', 'longTap', 'drag'];Events.forEach(function(eventName) {$.fn[eventName] = function() {var touch = new Touch($(this), eventName);touch.start();if (arguments[1]) {options = arguments[1]}return this.on(eventName, arguments[0])}});Touch = function() {var status, ts, tm, te;this.target = arguments[0];this.e = arguments[1]};Touch.prototype.framework = function(e) {e.preventDefault();var events;if (e.changedTouches) events = e.changedTouches[0];else events = e.originalEvent.touches[0];return events};Touch.prototype.start = function() {var self = this;self.target.on("touchstart",function(event) {event.preventDefault();var temp = self.framework(event);var d = new Date();self.ts = {x: temp.pageX,y: temp.pageY,d: d.getTime()}});self.target.on("touchmove",function(event) {event.preventDefault();var temp = self.framework(event);var d = new Date();self.tm = {x: temp.pageX,y: temp.pageY};if (self.e == "drag") {self.target.trigger(self.e, self.tm);return}});self.target.on("touchend",function(event) {event.preventDefault();var d = new Date();if (!self.tm) {self.tm = self.ts}self.te = {x: self.tm.x - self.ts.x,y: self.tm.y - self.ts.y,d: (d - self.ts.d)};self.tm = undefined;self.factory()})};Touch.prototype.factory = function() {var x = Math.abs(this.te.x);var y = Math.abs(this.te.y);var t = this.te.d;var s = this.status;if (x < 5 && y < 5) {if (t < 300) {s = "tap"} else {s = "longTap"}} else if (x < options.x && y > options.y) {if (t < 250) {if (this.te.y > 0) {s = "swipeDown"} else {s = "swipeUp"}} else {s = "swipe"}} else if (y < options.y && x > options.x) {if (t < 250) {if (this.te.x > 0) {s = "swipeLeft"} else {s = "swipeRight"}} else {s = "swipe"}}if (s == this.e) {this.target.trigger(this.e);return}}})(window.jQuery || window.Zepto);</script><script>
;(function(a){ a.fn.touchwipe=function(c){ var b={ drag:false, min_move_x:20, min_move_y:20, wipeLeft:function(){/*向左滑动*/}, wipeRight:function(){/*向右滑动*/}, wipeUp:function(){/*向上滑动*/}, wipeDown:function(){/*向下滑动*/}, wipe:function(){/*点击*/}, wipehold:function(){/*触摸保持*/}, wipeDrag:function(x,y){/*拖动*/}, preventDefaultEvents:true }; if(c){a.extend(b,c)}; this.each(function(){ var h,g,j=false,i=false,e; var supportTouch = "ontouchstart" in document.documentElement; var moveEvent = supportTouch ? "touchmove" : "mousemove", startEvent = supportTouch ? "touchstart" : "mousedown", endEvent = supportTouch ? "touchend" : "mouseup" /* 移除 touchmove 监听 */ function m(){ this.removeEventListener(moveEvent,d); h=null; j=false; clearTimeout(e) }; /* 事件处理方法 */ function d(q){ if(b.preventDefaultEvents){ q.preventDefault() }; if(j){ var n = supportTouch ? q.touches[0].pageX : q.pageX; var r = supportTouch ? q.touches[0].pageY : q.pageY; var p = h-n; var o = g-r; if(b.drag){ h = n; g = r; clearTimeout(e); b.wipeDrag(p,o); } else{ if(Math.abs(p)>=b.min_move_x){ m(); if(p>0){b.wipeLeft()} else{b.wipeRight()} } else{ if(Math.abs(o)>=b.min_move_y){ m(); if(o>0){b.wipeUp()} else{b.wipeDown()} } } } } }; /*wipe 处理方法*/ function k(){clearTimeout(e);if(!i&&j){b.wipe()};i=false;j=false;}; /*wipehold 处理方法*/ function l(){i=true;b.wipehold()}; function f(n){ //if(n.touches.length==1){ h = supportTouch ? n.touches[0].pageX : n.pageX; g = supportTouch ? n.touches[0].pageY : n.pageY; j=true; this.addEventListener(moveEvent,d,false); e=setTimeout(l,750) //} }; //if("ontouchstart"in document.documentElement){ this.addEventListener(startEvent,f,false); this.addEventListener(endEvent,k,false) //} }); return this };})(jQuery); /* 调用*/$("#aa").touchwipe({ wipeLeft:function(){ alert("向左滑动了")}, wipeRight:function(){alert("向右滑动了")},})</script><script>
/** * jQuery Plugin to obtain touch gestures * @author Andreas Waltl, netCU Internetagentur (http://www.netcu.de) * @version 1.1.1 (9th December 2010) */;(function($, undefined){ $.fn.touchwipe = function(settings) { var config = { min_move_x: 50, min_move_y: 20, wipeLeft: function() { }, wipeRight: function() { }, preventDefaultEvents: false }; if (settings) $.extend(config, settings); this.each(function() { var startX; var startY; var isMoving = false; var directionLocked = null; function cancelTouch() { this.removeEventListener('touchmove', onTouchMove); startX = null; isMoving = false; directionLocked = false; } function onTouchMove(e) { if(config.preventDefaultEvents) { e.preventDefault(); } if(isMoving) { var x = e.changedTouches ? e.changedTouches[0].clientX: e.clientX; var y = e.changedTouches ? e.changedTouches[0].clientY: e.clientY; var dx = startX - x; var dy = startY - y; var absDistX = Math.abs(dx); var absDistY = Math.abs(dy); if (directionLocked === "y") { return } else { if (directionLocked === "x") { e.preventDefault() } else { absDistX = Math.abs(dx); absDistY = Math.abs(dy); if (absDistX < 4) { return } if (absDistY > absDistX ) { dx = 0; directionLocked = "y"; return } else { e.preventDefault(); directionLocked = "x" } } } if(absDistX >= config.min_move_x) { cancelTouch(); if(dx > 0) { config.wipeLeft(); } else { config.wipeRight(); } } } } function onTouchStart(e) { if (e.touches.length == 1) { startX = e.changedTouches ? e.changedTouches[0].clientX: e.clientX; startY = e.changedTouches ? e.changedTouches[0].clientY: e.clientY; isMoving = true; directionLocked = false; this.addEventListener('touchmove', onTouchMove, false); } } if ('ontouchstart' in document.documentElement) { this.addEventListener('touchstart', onTouchStart, false); } }); return this; }; })(jQuery);<br><br>touch插件的更多相关文章
- 移动端续讲及zepto移动端插件外加touch插件介绍
媒体查询:针对不同设备,显示不同的样式. 设备像素比:dpr device-piexl-ratio 在he开发中,要一个3陪高清图片: 1080>=320*3 (主要是为了解决图片的失真问题) ...
- 移动端 (基于jquery的3个)touch插件
//第一个 Author: Alone Antroduction: 高级前端开发工程师 Sign: 人生没有失败,只有没到的成功. //依赖jQuery 或者Zepto <script> ...
- Unity手游之路<六>游戏摇杆之Easy Touch 3教程
之前已经介绍过Unity自带的摇杆Joystick,它用起来很简单.但是它也存在很多局限,不能全部满足普通mmo手游的一些需求,例如:要能方便地更好素材:能指定在某个区域显示,或者只有在该区域触摸时才 ...
- 插件-3D轮播图
先上效果图 查看实例点击 这里 这个栗子中,可以选择展示 5 张 或者展示 3 张,即使是只有一个slide,也可以完成布局,正常轮播,麻麻再也不用怕只有4个slid而不能用这种轮播啦! 本栗实现原 ...
- Easy Touch 摇感控制人物移动
Easy Touch 摇感控制人物移动 public class joystick : MonoBehaviour { public float Speed; //定义速度 p ...
- Unity手游之路游戏摇杆之Easy Touch 3教程
之前已经介绍过Unity自带的摇杆Joystick,它用起来很简单.但是它也存在很多局限,不能全部满足普通mmo手游的一些需求,例如:要能方便地更好素材:能指定在某个区域显示,或者只有在该区域触摸时才 ...
- [Phonegap+Sencha Touch] 移动开发72 List列表横向滑动操作(仿QQ列表滑动删除)
原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50425744 本插件有2个版本号:sencha touch 版本号和 extjs6 m ...
- mobile web HTML5 app曾经的踩过坑(转)
兼容性一直是前端工程师心中永远的痛.手机浏览器,因为基本是webkit(blink)内核当道,很多公司,不用考虑IE系的浏览器,所以感觉兼容性上的问题可能会少一些. 但是手机端,虽然出了很多工具,但是 ...
- mobile web曾经的踩过坑
兼容性一直是前端工程师心中永远的痛.手机浏览器,因为基本是webkit(blink)内核当道,很多公司,不用考虑IE系的浏览器,所以感觉兼容性上的问题可能会少一些. 但是手机端,虽然出了很多工具,但是 ...
随机推荐
- yii\bootstrap
yii\bootstrap\ButtonDropdown <?php echo yii\bootstrap\ButtonDropdown::widget([ 'label' => 'Act ...
- LightOJ 1268 Unlucky Strings (KMP+矩阵快速幂)
题意:给出一个字符集和一个字符串和正整数n,问由给定字符集组成的所有长度为n的串中不以给定字符串为连续子串的有多少个? 析:n 实在是太大了,如果小的话,就可以用动态规划做了,所以只能用矩阵快速幂来做 ...
- Java 栈与堆简介
一.前言 长久以来,一直被Java的内存分配问题,堆和栈问题困扰好久,面试的时候也非常心虚,这几天好好通过看书和技术博客来整理了一下,希望能找到我自己的理解方式. 二.内存 内存分物理内存和虚拟内存, ...
- Appium 简介及工作原理
申请:本文介绍主要是针对Android. 1.什么是Appium: Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及Firefox ...
- Java设置jre通过java new Date()得到的时间的时区
1.前提 由于公司有印尼的项目,该项目仅对印尼当地开放使用(公司在国内,用的是阿里云的ECS,但是阿里云在印尼没有服务器,所以就买了新加坡的服务器),印尼当地人用的是东七区的时间,所以比国内东八区的时 ...
- python3操作Excel openpyxl模块的使用
python 与excel 安装模块 本例子中使用的模块为: openpyxl 版本为2.4.8 安装方法请参看以前发表的文章(Python 的pip模块安装方法) Python处理Excel表格 使 ...
- Maven整理笔记の安装及配置
第一部分:在Windows上安装Maven 检查JDK的安装 在安装Maven之前,首先确认你已经正确安装了JDK.Maven可以运行在JDK1.4及以上版本.先打开Windows命令,运行 ...
- 20145233《网络对抗》Exp8 Web基础
20145233<网络对抗>Exp8 Web基础 实验问题思考 什么是表单? 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框.隐藏域 ...
- [LeetCode题解]: Sort Colors
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given an a ...
- Delphi32位程序拷贝system32目录中文件解决方法!
源码下载:http://download.csdn.net/detail/sunylat/9740352 unit Unit1; interface uses Winapi.Windows, Wina ...