hammer.js实现图片手势放大效果

发布时间 - 2026-01-11 03:01:10    点击率:

本文实例为大家分享了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();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# hammer.js图片手势放大  # hammer.js手势放大  # hammer.js图片放大  # javascript实现商品图片放大镜  # js实现点击图片在屏幕中间弹出放大效果  # JavaScript实现图片放大镜效果  # JavaScript实现多张图片放大镜效果示例【不限定图片尺寸  # rem单位】  # JavaScript实现图片的放大缩小及拖拽功能示例  # js实现图片局部放大效果详解  # js实现图片放大并跟随鼠标移动特效  # JS滚轮控制图片缩放大小和拖动的实例代码  # JS与CSS3实现图片响应鼠标移动放大效果示例  # JS实现图片放大镜插件详解  # js实现图片放大展示效果  # JavaScript实现图片放大预览效果  # 大家分享  # 具体内容  # 大家多多  # lt  # length  # add  # Manager  # mc  # false  # ticking  # transform  # _eImg  # initScale  # Pinch  # pan  # panstart  # onPan  # panmove  # threshold 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何在建站宝盒中设置产品搜索功能?  简历在线制作网站免费版,如何创建个人简历?  Laravel怎么清理缓存_Laravel optimize clear命令详解  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Mybatis 中的insertOrUpdate操作  微信公众帐号开发教程之图文消息全攻略  linux写shell需要注意的问题(必看)  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel如何自定义分页视图?(Pagination示例)  如何用y主机助手快速搭建网站?  浅述节点的创建及常见功能的实现  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  EditPlus中的正则表达式 实战(1)  利用python获取某年中每个月的第一天和最后一天  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何用wdcp快速搭建高效网站?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何在香港服务器上快速搭建免备案网站?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel中的Facade(门面)到底是什么原理  Laravel怎么为数据库表字段添加索引以优化查询  如何解决hover在ie6中的兼容性问题  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel定时任务怎么设置_Laravel Crontab调度器配置  jQuery中的100个技巧汇总  Laravel怎么调用外部API_Laravel Http Client客户端使用  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  使用Dockerfile构建java web环境  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何正确选择百度移动适配建站域名?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何在 Pandas 中基于一列条件计算另一列的分组均值  Android自定义listview布局实现上拉加载下拉刷新功能  新三国志曹操传主线渭水交兵攻略  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  ,网页ppt怎么弄成自己的ppt?  如何在云服务器上快速搭建个人网站?  如何快速上传建站程序避免常见错误?