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 参考教程
Dec 29 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
jQuery中的val()示例应用
Feb 26 Javascript
jquery实现动态操作select选中
Feb 11 Javascript
有关jquery与DOM节点操作方法和属性记录
Apr 15 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
vue打包之后生成一个配置文件修改接口的方法
Dec 09 Javascript
vue路由--网站导航功能详解
Mar 29 Javascript
功能完善的小程序日历组件的实现
Mar 31 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
vue-resource 拦截器interceptors使用详解
Jan 18 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
三种php连接access数据库方法
2013/11/11 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
JavaScript如何操作css
2020/10/24 Javascript
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
python实现二维数组的对角线遍历
2019/03/02 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
介绍一下grep命令的使用
2015/06/12 面试题
北大自主招生自荐信
2013/10/19 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
酒店营销策划方案
2014/02/07 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
运动会口号16字
2014/06/07 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
个人授权委托书样本
2014/09/13 职场文书
初中英语教学反思范文
2016/02/15 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang