-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathzTouch.min.js
1 lines (1 loc) · 2.64 KB
/
zTouch.min.js
1
function Swipe(c,d){var f={self:c,count:0,speed:300,iniL:30,iniT:30,iniAngle:30,touch:false,mutiTouch:false,setAttr:function(a,b){f[a]=b}};(function(){_this=f.self;for(var o in d){f[o]=d[o]}var a=_this.offset();f.bL=a.left;f.bT=a.top;f.bW=_this.width();f.bH=_this.height();f.bRb=f.bL+f.bW;f.bBb=f.bT+f.bH;f.total=_this.children().children().length})();f.vendor=(/webkit/i).test(navigator.appVersion)?'webkit':(/firefox/i).test(navigator.userAgent)?'Moz':'opera'in window?'O':'';f.has3d='WebKitCSSMatrix'in window&&'m11'in new WebKitCSSMatrix();f.hasTouch='ontouchstart'in window;f.hasTransform=f.vendor+'Transform'in document.documentElement.style;function directionDetect(l,t){if(Math.abs(t)<f.iniT&&Math.abs(l)>f.iniL){var a=l<0?'left':'right';return a}return false}function borderDetect(x,y){return(x<f.bL||x>f.bRb||y<f.bT||y>f.bBb)}function getAngle(n){return Math.atan(n)*180/Math.PI}function getDis(a,b){return Math.sqrt(Math.pow(a,2)+Math.pow(b,2))}function setPointData(a,b){if(b){for(var o in b){f.setAttr(o,b[o])}}else{var t=new Date();f.endX=a.pageX;f.endY=a.pageY;f.endTime=t.getTime();f.duration=f.endTime-f.startTime;f.mX=a.pageX-f.startX;f.mY=a.pageY-f.startY;f.direction=directionDetect(f.mX,f.mY);f.angle=getAngle(f.mY/f.mX)}}function multiTouchDetect(e){f.tLen=e.touches.length;if(f.tLen>1){var a=e.touches[0],point1=e.touches[1],xLen=point1.pageX-a.pageX,yLen=point1.pageY-a.pageY,angle=getAngle(yLen/xLen),gDis=getDis(xLen,yLen);if(!f.mutiTouch){f.gStartDis=gDis;f.gStartAngle=angle}else{f.gEndDis=gDis;f.gEndAngle=angle;f.scale=gDis/f.gStartDis;f.rotation=angle-f.gStartAngle}f.mutiTouch=true}else{f.mutiTouch=false}}function startFun(e){var a=e.touches[0],t=new Date();var b={startX:a.pageX,startY:a.pageY,startTime:t.getTime(),identifier:a.identifier}setPointData(a,b);f.touch=true;if(typeof f.sCallback=="function"){f.sCallback(f)}}function moveFun(e){var a=e.touches[0];if(borderDetect(a.pageX,a.pageY)){f.touch=false;return false}if(f.touch){setPointData(a);multiTouchDetect(e);if(typeof f.mCallback=="function"){f.mCallback(f)}}if(Math.abs(f.angle)<f.iniAngle){e.preventDefault()}}function endFun(e){f.touch=false;f.mutiTouch=false;if(typeof f.eCallback=="function"){f.eCallback(f)}}if(typeof f.beforeCallback=="function"){f.beforeCallback(f)}_this.die("touchstart,touchmove,touchend");_this.get(0).addEventListener('touchstart',startFun);_this.get(0).addEventListener('touchmove',moveFun);_this.get(0).addEventListener('touchend',endFun);if(typeof f.afterCallback=="function"){f.afterCallback(f)}}if(window.jQuery||window.Zepto){(function(a){a.fn.Swipe=function(b){return this.each(function(){a(this).data("Swipe",new Swipe(a(this),b))})}})(window.jQuery||window.Zepto)};