hammer.js实现图片手势放大效果


Posted in Javascript onAugust 29, 2017

本文实例为大家分享了hammer.js实现图片手势放大效果的具体代码,供大家参考,具体内容如下

//图片手势放大
      var reqAnimationFrame = (function() {
        return window[Hammer.prefixed(window, 'requestAnimationFrame')] || function(callback) {
          window.setTimeout(callback, 1000 / 60);
        };
      })();
      var el = $('img');
      var ticking = false;
      var transform;
      var initScale = 1;
      var _eImg = '';
      for (var m = 0; m < el.length; m++) {
        var mc = new Hammer.Manager(el[m]);
        mc.add(new Hammer.Pan({
          threshold: 0,
          pointers: 0
        }));
        mc.add(new Hammer.Swipe()).recognizeWith(mc.get('pan'));
        mc.add(new Hammer.Pinch({
          threshold: 0
        })).recognizeWith(mc.get('pan'));
        mc.on('panstart panmove', onPan);
        mc.on('pinchstart pinchmove', onPinch);
        mc.on('swipe', onSwipe);
      }

      function resetElement() {
        el.addClass('animate');
        transform = {
          translate: {
            x: 0,
            y: 0
          },
          scale: 1,
          angle: 0,
          rx: 0,
          ry: 0,
          rz: 0
        };
        requestElementUpdate();
      }

      function updateElementTransform() {
        var value = ['translate3d(' + transform.translate.x + 'px, ' + transform.translate.y + 'px, 0)', 'scale(' + transform.scale + ', ' + transform.scale + ')', 'rotate3d(' + transform.rx + ',' + transform.ry + ',' + transform.rz + ',' + transform.angle + 'deg)'];
        value = value.join(' ');
        if (_eImg != '') {
          _eImg.style.webkitTransform = value;
          _eImg.style.mozTransform = value;
          _eImg.style.transform = value;
          //_eImg.css({ 'transform': value }, { '-webkit-transform': value });
        }
        ticking = false;
      }

      function requestElementUpdate() {
        if (!ticking) {
          reqAnimationFrame(updateElementTransform);
          ticking = true;
        }
      }

      function onPan(ev) {
        el.removeClass('animate');
        transform.translate = {
          x: ev.deltaX,
          y: ev.deltaY
        };
      }

      function onPinch(ev) {
        if (ev.type == 'pinchstart') {
          initScale = transform.scale || 1;
        }
        el.removeClass('animate');
        transform.scale = initScale * ev.scale;
        requestElementUpdate();
        _eImg = ev.target;
        return _eImg;
      }

      function onSwipe(ev) {
        var angle = 10;
        transform.ry = (ev.direction & Hammer.DIRECTION_HORIZONTAL) ? 1 : 0;
        transform.rx = (ev.direction & Hammer.DIRECTION_VERTICAL) ? 1 : 0;
        transform.angle = (ev.direction & (Hammer.DIRECTION_RIGHT | Hammer.DIRECTION_UP)) ? angle : -angle;
        requestElementUpdate();
        _eImg = ev.target;
        return _eImg;
      }
      resetElement();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用JavaScript实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
javascript实现表单验证
Jan 29 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
浅谈Express异步进化史
Sep 09 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 Javascript
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
js禁止表单重复提交
Aug 29 #Javascript
View.post() 不靠谱的地方你知道多少
Aug 29 #Javascript
jsTree事件和交互以及插件plugins详解
Aug 29 #Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
Aug 29 #Javascript
基于jstree使用AJAX请求获取数据形成树
Aug 29 #Javascript
基于jQuery的左滑出现删除按钮的示例
Aug 29 #jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 #jQuery
You might like
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
Use Word to Search for Files
2007/06/15 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
三维科技面试题
2013/07/27 面试题
自我评价正确写法范文
2013/12/10 职场文书
通信工程专业毕业生推荐信
2013/12/25 职场文书
党校培训思想汇报
2014/01/03 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
酒店员工检讨书
2014/02/18 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
创意广告词
2014/03/17 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
2015学校年度工作总结
2015/05/11 职场文书
2015中学学校工作总结
2015/07/20 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技