最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

hammer.js实现移动端的图片手势放大功能

来源:动视网 责编:小采 时间:2020-11-27 19:54:11
文档

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 tran
推荐度:
导读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 tran


 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();

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

Node.js文件系统操作

es6解构有哪些方法

文档

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 tran
推荐度:
标签: 图片 手势 移动
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top