touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
可以实现手势操作:拖动、缩放、旋转。封装好的脚本方法是这样的:
varcat=window.cat||{};
cat.touchjs={
left:0,
top:0,
scaleVal:1,//缩放
rotateVal:0,//旋转
curStatus:0,//记录当前手势的状态,0:拖动,1:缩放,2:旋转
//初始化
init:function($targetObj,callback){
touch.on($targetObj,'touchstart',function(ev){
cat.touchjs.curStatus=0;
ev.preventDefault();//阻止默认事件
});
if(!window.localStorage.cat_touchjs_data)
callback(0,0,1,0);
else{
varjsonObj=JSON.parse(window.localStorage.cat_touchjs_data);
cat.touchjs.left=parseFloat(jsonObj.left),cat.touchjs.top=parseFloat(jsonObj.top),cat.touchjs.scaleVal=parseFloat(jsonObj.scale),cat.touchjs.rotateVal=parseFloat(jsonObj.rotate);
callback(cat.touchjs.left,cat.touchjs.top,cat.touchjs.scaleVal,cat.touchjs.rotateVal);
}
},
//拖动
drag:function($targetObj,callback){
touch.on($targetObj,'drag',function(ev){
$targetObj.css("left",cat.touchjs.left+ev.x).css("top",cat.touchjs.top+ev.y);
});
touch.on($targetObj,'dragend',function(ev){
cat.touchjs.left=cat.touchjs.left+ev.x;
cat.touchjs.top=cat.touchjs.top+ev.y;
callback(cat.touchjs.left,cat.touchjs.top);
});
},
//缩放
scale:function($targetObj,callback){
varinitialScale=cat.touchjs.scaleVal||1;
varcurrentScale;
touch.on($targetObj,'pinch',function(ev){
if(cat.touchjs.curStatus==2){
return;
}
cat.touchjs.curStatus=1;
currentScale=ev.scale-1;
currentScale=initialScale+currentScale;
cat.touchjs.scaleVal=currentScale;
vartransformStyle='scale('+cat.touchjs.scaleVal+')rotate('+cat.touchjs.rotateVal+'deg)';
$targetObj.css("transform",transformStyle).css("-webkit-transform",transformStyle);
callback(cat.touchjs.scaleVal);
});
touch.on($targetObj,'pinchend',function(ev){
if(cat.touchjs.curStatus==2){
return;
}
initialScale=currentScale;
cat.touchjs.scaleVal=currentScale;
callback(cat.touchjs.scaleVal);
});
},
//旋转
rotate:function($targetObj,callback){
varangle=cat.touchjs.rotateVal||0;
touch.on($targetObj,'rotate',function(ev){
if(cat.touchjs.curStatus==1){
return;
}
cat.touchjs.curStatus=2;
vartotalAngle=angle+ev.rotation;
if(ev.fingerStatus==='end'){
angle=angle+ev.rotation;
}
cat.touchjs.rotateVal=totalAngle;
vartransformStyle='scale('+cat.touchjs.scaleVal+')rotate('+cat.touchjs.rotateVal+'deg)';
$targetObj.css("transform",transformStyle).css("-webkit-transform",transformStyle);
$targetObj.attr('data-rotate',cat.touchjs.rotateVal);
callback(cat.touchjs.rotateVal);
});
}
};
html代码:
<divstyle="position:relative;width:100%;height:250px;overflow:hidden;border:1pxdashed#ff0000;"> <imgid="targetObj"style="position:relative;transform-origin:center"src="http://demo.somethingwhat.com/images/flower1.jpg"/> </div>
js调用:
var$targetObj=$('#targetObj');
//初始化设置
cat.touchjs.init($targetObj,function(left,top,scale,rotate){};
//初始化拖动手势(不需要就注释掉)
cat.touchjs.drag($targetObj,function(left,top){});
//初始化缩放手势(不需要就注释掉)
cat.touchjs.scale($targetObj,function(scale){});
//初始化旋转手势(不需要就注释掉)
cat.touchjs.rotate($targetObj,function(rotate){});
以上所述是小编给大家介绍的touch.js拖动、缩放、旋转(鼠标手势)功能代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!