touch.js 拖动、缩放、旋转 (鼠标手势)功能代码


Posted in Javascript onFebruary 04, 2017

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

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) { });

以上所述是小编给大家介绍的touch.js 拖动、缩放、旋转 (鼠标手势)功能代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery uaMatch源代码
Feb 14 Javascript
javascript获得网页窗口实际大小的示例代码
Sep 21 Javascript
动态创建script标签实现跨域资源访问的方法介绍
Feb 28 Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 Javascript
js实现截图保存图片功能的代码示例
Feb 16 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
JS实现瀑布流效果
Mar 07 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 Javascript
javascript实现扫雷简易版
Aug 18 Javascript
JavaScript实现网页留言板功能
Nov 23 Javascript
jQuery插件autocomplete使用详解
Feb 04 #Javascript
d3.js中冷门却实用的内置函数总结
Feb 04 #Javascript
原生js开发的日历插件
Feb 04 #Javascript
JS Select下拉框(支持输入模糊查询)
Feb 04 #Javascript
原生js实现打字动画游戏
Feb 04 #Javascript
js实现自定义路由
Feb 04 #Javascript
jQuery窗口拖动功能的实现代码
Feb 04 #Javascript
You might like
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python操作MongoDB基础知识
2013/11/01 Python
Python压缩和解压缩zip文件
2015/02/14 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python实现的科学计算器功能示例
2017/08/04 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
解析python实现Lasso回归
2019/09/11 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
蔻驰美国官网:COACH美国
2016/08/18 全球购物
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
党校学习思想汇报
2014/01/06 职场文书
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers