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 相关文章推荐
文本加密解密
Jun 23 Javascript
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
JS下拉缓冲菜单示例代码
Aug 30 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
bootstrap table服务端实现分页效果
Aug 10 Javascript
Vue SSR 组件加载问题
May 02 Javascript
微信小程序 JS动态修改样式的实现方法
Dec 16 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
Jan 07 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php实现的简单检验登陆类
2015/06/18 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
基于jQuery+JSON的省市二三级联动效果
2015/06/05 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
销售工作岗位职责
2013/12/24 职场文书
九年级体育教学反思
2014/01/23 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
设计师个人求职信范文
2014/02/02 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
环保项目建议书
2014/08/26 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
单位租房协议书范本
2014/12/04 职场文书
团代会闭幕词
2015/01/28 职场文书
运动会5000米加油稿
2015/07/21 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript