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函数库-集合框架
Apr 27 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
Jun 27 Javascript
js语法学习之判断一个对象是否为数组
May 13 Javascript
JavaScript实现页面定时刷新(定时器,meta)
Oct 12 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
Oct 21 Javascript
JS中正则表达式要注意lastIndex属性
Aug 08 Javascript
Node.Js生成比特币地址代码解析
Apr 21 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
解决vue props 拿不到值的问题
Sep 11 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 Javascript
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
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
javascript实现的listview效果
2007/04/28 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
Python实现求两个csv文件交集的方法
2017/09/06 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
网游商务专员求职信
2013/10/15 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
农民工创业典型事迹
2014/01/25 职场文书
教学评估实施方案
2014/03/16 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
党支部先进事迹材料
2014/12/24 职场文书
新娘婚礼致辞
2015/07/27 职场文书
服装店员工管理制度
2015/08/07 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫