hammer js> как заблокировать горизонтальное панорамирование при прокрутке страницы - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть страница, на которой я разместил несколько горизонтальных слайд-шоу, и добавил к ним панорамирование и пролистывание.К сожалению, при прокрутке на мобильных устройствах, если вы прокручиваете над слайд-шоу, молоток распознает панорамирование и оставляет слайд-шоу немного панорамированными ... Не очень красиво.Я думаю о различных решениях, но наиболее очевидным может быть прекращение панорамирования во время прокрутки.Это возможно каким-то образом?Вот выдержка из моего текущего кода (извините, есть методы из родительского класса ..):

if(this.options.touch_enabled){
  this.hm = new Hammer(this.panels_box, {
    recognizers: [
      [Hammer.Swipe,{ direction: Hammer.DIRECTION_HORIZONTAL, threshold: 80 }]
      ,[Hammer.Pan,{ direction: Hammer.DIRECTION_HORIZONTAL, threshold: 80 }, ['swipe']]
    ]
    ,domEvents: false
  });

  this.hm.on('swipeleft', function(e){ if(this.options.next_condition()) this.goto('next', null, true); }.bind(this));
  this.hm.on('swiperight', function(e){ if(this.options.prev_condition()) this.goto('prev', null, true); }.bind(this));
  this.hm.on('panstart', function(e){ this.disable_transition(); }.bind(this));
  this.hm.on('panend', function(e){ this.enable_transition(); }.bind(this));

  this.hm.on('panleft', function(e){
    if(!this.options.loop){ if(this.data_box.getAttribute('data-current') >= this.bounds.end) return; }
    this.panels_strip.style.setProperty('--distance', e.deltaX + 'px');
  }.bind(this));
  this.hm.on('panright', function(e){
    if(!this.options.loop){ if(this.data_box.getAttribute('data-current') <= 0) return; }
    this.panels_strip.style.setProperty('--distance', e.deltaX + 'px');
  }.bind(this));
}// touch

1 Ответ

0 голосов
/ 17 декабря 2018

Решением для меня было проверить deltaY и deltaX, а также тип события (поскольку проблема не была обнаружена на настольных компьютерах).Вот выписка:

this.hm.on('panleft', function(e){ // ...and same for panright
   if(e.pointerType == 'touch' && (Math.abs(e.deltaY) > Math.abs(e.deltaX))){ return false; }
   // do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...