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 AspxButton的客户端操作
Jun 26 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
js关于命名空间的函数实例
Feb 05 Javascript
ECMAScript 5中的属性描述符详解
Mar 02 Javascript
jQuery实现切换字体大小的方法
Mar 10 Javascript
js cookie实现记住密码功能
Jan 17 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
javascript实现移动端轮播图
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
简单实用的.net DataTable导出Execl
2013/10/28 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Python编写单元测试代码实例
2020/09/10 Python
Python类class参数self原理解析
2020/11/19 Python
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
软件售后服务承诺书
2014/05/21 职场文书
优秀班组长事迹
2014/05/31 职场文书
未中标通知书
2015/04/17 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python