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 相关文章推荐
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
jquery图片滚动放大代码分享(2)
Aug 28 Javascript
JS模拟实现Select效果代码
Sep 24 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
webpack实用小功能介绍
Jan 02 Javascript
浅析Node.js非对称加密方法
Jan 29 Javascript
webpack配置打包后图片路径出错的解决
Apr 26 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 jQuery
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 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
把77A收信机改造成收音机
2021/03/02 无线电
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JavaScript中string对象
2015/06/12 Javascript
详解JavaScript函数
2015/12/01 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python tornado微信开发入门代码
2018/08/24 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
基于python图像处理API的使用示例
2020/04/03 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android