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如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel怎么实现验证码(Captcha)功能  JavaScript中的标签模板是什么_它如何扩展字符串功能  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Android自定义listview布局实现上拉加载下拉刷新功能  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在万网利用已有域名快速建站?  免费视频制作网站,更新又快又好的免费电影网站?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  详解Oracle修改字段类型方法总结  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel Fortify是什么,和Jetstream有什么关系  如何彻底删除建站之星生成的Banner?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何快速使用云服务器搭建个人网站?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Thinkphp 中 distinct 的用法解析  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  nodejs redis 发布订阅机制封装实现方法及实例代码  WEB开发之注册页面验证码倒计时代码的实现  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel如何处理CORS跨域请求?(配置示例)  如何在宝塔面板中创建新站点?  网站建设保证美观性,需要考虑的几点问题!  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  android nfc常用标签读取总结  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  UC浏览器如何设置启动页 UC浏览器启动页设置方法  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何在万网主机上快速搭建网站?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】