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系的浏览器,所以感觉兼容性上的问题可能会少一些. 但是手机端,虽然出了很多工具,但是 ...
随机推荐
- WebService搭建
好久没有用WebService了,今天想复习一下原来的技术,结果错误百出. 这几天重装了系统,所有的东西都要重新配置,导致了很多原来没有发生过的问题,在这里做个笔记,希望以后不会再有这样的错误.
- 我的BootStrap学习笔记
1.全局样式里面: 1.container:版心 2.col-xx-xx:栅格布局 3.btn btn-default: 按钮,默认按钮样式 4..pull-left pull-right cle ...
- python变量和简单的数据类型
1.运行hello_world.py时发生的情况 运行hello_world.py时,Python都做了些什么呢?实际上,即便是运行简单的程序,Python所做的工作也相当多: #!/usr/bin/ ...
- python抓网页数据【ref:http://www.1point3acres.com/bbs/thread-83337-1-1.html】
前言:数据科学越来越火了,网页是数据很大的一个来源.最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,python)都可以实现抓网页数据,甚至很多统计\计算的语言(R,Matla ...
- WebApi跨域请求
在实际开发中 会有提供webapi给前端js 直接调用的情况, 这时候就会有存在跨域的情况, 解决方案: 在Global中添加代码 protected void Application_BeginRe ...
- spring boot 错误:Check your ViewResolver setup
Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...
- C#设计模式--工厂模式之简单模式
简单工厂模式定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品 ...
- HTML5QQ登录cav demo
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="tex ...
- webstorm中新建vue工程
1.在https://nodejs.org/en/下载安装nodejs 2.vue-cli 搭建框架 首先从官方网站安装 node.js,会一并安装 npm工具.注意 npm一定要3.10以上,以免很 ...
- 201621123023《Java程序设计》第7周学习总结
一.本周学习总结 1.1 思维导图:Java图形界面总结 二.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 关键词:事件源.事件监听器.事件处理方法.事件适配器 ...