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 相关文章推荐
jQuery之浮动窗口实现代码(两种方法)
Sep 08 Javascript
jQuery.extend()的实现方式详解及实例
Jun 29 Javascript
js函数排序的实例代码
Jul 01 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
JavaScript中return false的用法
Mar 12 Javascript
js解决movebox移动问题
Mar 29 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
Apr 13 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
Sep 11 Javascript
使用Sonarqube扫描Javascript代码的示例
Dec 26 Javascript
js通过canvas生成图片缩略图
Oct 02 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
python 多个参数不为空校验方法
2019/02/14 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
python安装本地whl的实例步骤
2019/10/12 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
几个常见的软件测试问题
2016/09/07 面试题
单位在职证明范本
2014/01/09 职场文书
青岛导游词
2015/02/12 职场文书
浅谈python中的多态
2021/06/15 Python
MySQL 逻辑备份 into outfile
2022/05/15 MySQL