Touch.js手勢庫是專門在Webkit內(nèi)核瀏覽器的移動設(shè)備中使用中設(shè)計的, Touch.js是移動設(shè)備上的手勢識別與事件庫。Touch.js基于原生事件,支持事件代理, 性能更好,極簡的API,秒速上手等優(yōu)勢。
1、旋轉(zhuǎn)事件- startRotate
1 2 3 4 5 6 7 8 9 10 11 12
| var angle = 0;
touch.on('#target', 'touchstart', function(ev){
ev.startRotate();
ev.preventDefault();
});
touch.on('#target', 'rotate', function(ev){
var totalAngle = angle + ev.rotation;
if(ev.fingerStatus === 'end'){
angle = angle + ev.rotation;
}
this.style.webkitTransform = 'rotate(' + totalAngle + 'deg)';
}); |
2、雙指縮放事件-Scale
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var target = document.getElementById("target");
target.style.webkitTransition = 'all ease 0.05s';
touch.on('#target', 'touchstart', function(ev){
ev.preventDefault();
});
var initialScale = 1;
var currentScale;
touch.on('#target', 'pinchend', function(ev){
currentScale = ev.scale - 1;
currentScale = initialScale + currentScale;
currentScale = currentScale > 2 ? 2 : currentScale;
currentScale = currentScale < 1 ? 1 : currentScale;
this.style.webkitTransform = 'scale(' + currentScale + ')';
log("當前縮放比例為:" + currentScale + ".");
});
touch.on('#target', 'pinchend', function(ev){
initialScale = currentScale;
}); |
3、識別單擊, 雙擊和長按事件-Tap & Hold
1 2 3
| touch.on('#target', 'hold tap doubletap', function(ev){
//console.log(ev.type);
}); |
4、向左, 向右滑動-Swipe
1 2 3 4 5 6 7 8 9 10 11 12 13
| touch.on('#target', 'touchstart', function(ev){
ev.preventDefault();
});
var target = document.getElementById("target");
target.style.webkitTransition = 'all ease 0.2s';
touch.on(target, 'swiperight', function(ev){
this.style.webkitTransform = "translate3d(" + rt + "px,0,0)";
log("向右滑動.");
});
touch.on(target, 'swipeleft', function(ev){
log("向左滑動.");
this.style.webkitTransform = "translate3d(-" + this.offsetLeft + "px,0,0)";
}); |
5、拖拽事件-Drag
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| touch.on('#target', 'touchstart', function(ev){
ev.preventDefault();
});
var target = document.getElementById("target");
var dx, dy;
touch.on('#target', 'drag', function(ev){
dx = dx || 0;
dy = dy || 0;
log("當前x值為:" + dx + ", 當前y值為:" + dy +".");
var offx = dx + ev.x + "px";
var offy = dy + ev.y + "px";
this.style.webkitTransform = "translate3d(" + offx + "," + offy + ",0)";
});
touch.on('#target', 'dragend', function(ev){
dx += ev.x;
dy += ev.y;
}); |
|