可以实现手势操作:拖动、缩放、旋转。封装好的脚本方法是这样的:

var cat = 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 {
var jsonObj = 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) {
var initialScale = cat.touchjs.scaleVal || 1;
var currentScale;
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;
var transformStyle = '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) {
var angle = cat.touchjs.rotateVal || 0;
touch.on($targetObj, 'rotate', function (ev) {
if (cat.touchjs.curStatus == 1) {
return;
}
cat.touchjs.curStatus = 2;
var totalAngle = angle + ev.rotation;
if (ev.fingerStatus === 'end') {
angle = angle + ev.rotation;
}
cat.touchjs.rotateVal = totalAngle;
var transformStyle = '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代码:

<div style="position:relative;width: 100%;height: 250px;overflow: hidden;border: 1px dashed #ff0000;">
<img id="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) { });

转载地址:http://blog.csdn.net/somethin...
touch官网地址:https://www.awesomes.cn/repo/...

最新文章

  1. Uncaught RangeError: Maximum call stack size exceeded 超出最大调用值(个人解释)
  2. 【poj2096】Collecting Bugs
  3. ZABBIX冗余架构构筑(Centos6.4+pacemaker+corosync+drbd)
  4. Java Servlet(七):JavaWeb MVC 操作(jdk7+tomcat7+eclipse)
  5. php 连接redis,并登录验证
  6. 源码安装zabbix
  7. jquery表单提交和重置
  8. Autolayout-VFL语言添加约束
  9. ArrayList中元素去重问题
  10. iOS开发笔记-两种单例模式的写法
  11. systemctl 命令完全指南
  12. Android 测试 Appium、Robotium、monkey等框架或者工具对比
  13. MySQL (八)
  14. java字符串比较
  15. Fiddler实现对手机抓包
  16. IE9及以下input无背景时,层级混乱问题
  17. 步步为营103-ZTree 二级联动
  18. ubuntu python 安装numpy,scipy.pandas.....
  19. YIT-CTF—密码学
  20. oracle日期、转换函数

热门文章

  1. 二、activiti工作流-创建25张表
  2. vue项目 使用Hbuilder打包app 设置沉浸式状态栏
  3. 【原】gulp工作中的实战
  4. 《JavaScript总结》深拷贝和浅拷贝
  5. CSS有哪些属性是可以继承的?
  6. Elasticsearch实践(四):IK分词
  7. shell 脚本实现文件对称加密
  8. java与json,一篇就够了
  9. 项目详解4—haproxy 反向代理负载均衡
  10. [总结]数论和组合计数类数学相关(定理&amp;证明&amp;板子)