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

前端之家收集整理的这篇文章主要介绍了hammer.js实现图片手势放大效果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

原文链接:https://www.f2er.com/js/36764.html

猜你在找的JavaScript相关文章