jQuery cycle2:滚动幻灯片

jQuery cycle2: move through slides on scroll

我目前正在使用 Cycle2 插件创建幻灯片(http://jquery.malsup.com/cycle2/), instead of triggering the slide change on click I want to trigger it when you scroll. Essentially I'm trying replicate something like this: http://loris-cormoreche.com 但使用 cycle2 插件。

我设置了一个 codepen 来演示这个问题:http://codepen.io/neal_fletcher/pen/NrRdmP 如果你滚动你会看到我遇到的问题,图像不断闪烁并且一次循环显示多个图像同样,总的来说只是很麻烦。 我目前的代码如下:

$('.cycle-slideshow').on( 'DOMMouseScroll mousewheel', function ( event ) {
    if( event.originalEvent.detail > 0 || event.originalEvent.wheelDelta < 0 ) { //alternative options for wheelData: wheelDeltaX & wheelDeltaY
        $('.cycle-slideshow').cycle('next');
        console.log('Down');
    } else {
       $('.cycle-slideshow').cycle('prev');
       console.log('Up');
    }
    //prevent page fom scrolling
    return false;
});

如有任何改进建议或方法,我们将不胜感激!

它有问题的原因是因为事件在每个 "scroll-click" 或任何你想调用它的时候触发。因此,当您滚动时,您会多次触发它,这使得它像那样起伏不定。

我在这个代码笔中修复了它:http://codepen.io/LinusAronsson/pen/EygWpd

我所做的是将 jQuery 更改为以下内容:

var scrollDisabled = false;
$('.cycle-slideshow').on('DOMMouseScroll mousewheel', function(event) {

 if (scrollDisabled)
     return;

  if (event.originalEvent.detail > 0 || event.originalEvent.wheelDelta < 0) { //alternative options for wheelData: wheelDeltaX & wheelDeltaY
  $('.cycle-slideshow').cycle('next');
    console.log('Down');
  } else {
    $('.cycle-slideshow').cycle('prev');
  console.log('Up');
    }
   //prevent page fom scrolling

   scrollDisabled = true;
   setTimeout(function(){scrollDisabled = false;}, 1200);

});

我基本上是在使用鼠标滚轮事件后将其关闭 1200 毫秒,这足以让它在下一张图片进入视图之前不会被触发。