【问题标题】:Implementing Autoplay on glider.js在 glider.js 上实现自动播放
【发布时间】:2020-05-31 22:00:49
【问题描述】:

所以我在我的网站上使用 glider.js (https://nickpiscitelli.github.io/Glider.js/) 来处理幻灯片,因为我真的想保持最小化(我知道那里还有其他滑块,但 glider.js 是最轻的) .但是,我确实需要自动播放功能,但我似乎无法使其工作(我不太了解JS的方法,我只是复制代码sn-ps以获得我需要的东西)

我找到了一些自动播放的代码,它看起来像这样:

function sliderAuto(slider, miliseconds) {
 slider.isLastSlide = function() {
   return slider.page >= slider.dots.childElementCount - 1;
 }

 var slide = function() {
   slider.slideTimeout = setTimeout(function() {
     function slideTo() {
       return slider.isLastSlide() ? 0 : slider.page + 1;
     }

     slider.scrollItem(slideTo(), true);
   }, miliseconds);
 }

 slider.ele.addEventListener('glider-animated', function(event) {
   window.clearInterval(slider.slideTimeout);
   slide();
 });

 slide();
}

但我不知道如何激活它,让它工作。我知道我应该将参数传递给“滑块”和“毫秒”,但我不知道我到底应该传递什么,我应该为每张幻灯片设置一个特殊的类,然后传递那个类吗?假设我的 html 如下:

<div class="glider-contain">
  <div class="glider">
    <div>your content here</div>
    <div>your content here</div>
    <div>your content here</div>
    <div>your content here</div>
  </div>

如何使自动播放工作?谢谢!

【问题讨论】:

    标签: javascript html slider carousel autoplay


    【解决方案1】:

    根据您链接的文档和代码 sn-p 我会说 首先,slider 参数应该是您的滑翔机对象(您使用 new Glidder(... 创建的内容,milliseconds 是每张幻灯片可见的时间量(以毫秒为单位)。

    现在,它可能看起来像一个例子:

    <div class="glider-contain">
      <div id="glider" class="glider">
        <div class="placeholder">1</div>
        <div class="placeholder">2</div>
        <div class="placeholder">3</div>
        <div class="placeholder">4</div>
      </div>
    </div>
    
    const glider = new Glider(document.getElementById('glider'));
    
    function sliderAuto(slider, miliseconds) {
     const slidesCount = slider.track.childElementCount;
     let slideTimeout = null;
     let nextIndex = 1;
    
     function slide () {
       slideTimeout = setTimeout(
         function () {
           if (nextIndex >= slidesCount ) {
             nextIndex = 0;
           }
           slider.scrollItem(nextIndex++);
         },
         miliseconds
       );
     }
    
     slider.ele.addEventListener('glider-animated', function() {
       window.clearInterval(slideTimeout);
       slide();
     });
    
     slide();
    }
    
    sliderAuto(glider, 1000)
    

    我对 sn-p 进行了一些编辑,因为您似乎没有使用点。 working fiddle

    【讨论】:

      【解决方案2】:

      我已将接受的答案调整为 鼠标悬停时暂停自动播放。此外,您可以使用slideAutoPaly 函数的重复参数来处理自动播放循环。

      var slider = new Glider(document.querySelector('.glider'), {
          slidesToScroll: 1,
          slidesToShow: 1,
          dots: '#dots',
          arrows: {
              prev: '.glider-prev',
              next: '.glider-next'
          }
      });
      
      slideAutoPaly(slider, '.glider');
      
      function slideAutoPaly(glider, selector, delay = 5000, repeat = true) {
          let autoplay = null;
          const slidesCount = glider.track.childElementCount;
          let nextIndex = 1;
          let pause = true;
      
          function slide() {
              autoplay = setInterval(() => {
                  if (nextIndex >= slidesCount) {
                      if (!repeat) {
                          clearInterval(autoplay);
                      } else {
                          nextIndex = 0;
                      }
                  }
                  glider.scrollItem(nextIndex++);
              }, delay);
          }
      
          slide();
      
          var element = document.querySelector(selector);
          element.addEventListener('mouseover', (event) => {
              if (pause) {
                  clearInterval(autoplay);
                  pause = false;
              }
          }, 300);
      
          element.addEventListener('mouseout', (event) => {
              if (!pause) {
                  slide();
                  pause = true;
              }
          }, 300);
      }
      

      另外,请查看 Github 问题:https://github.com/NickPiscitelli/Glider.js/issues/43

      【讨论】:

      • 有没有办法让它无限自动滑动......在这个例子中,它在第 4 个之后滑回第一个面板。它应该再次滑动,第一次。相反,它向后滑动到第一个。这似乎很奇怪和刺耳。它应该保持相同的方向滑动,但重新开始。你知道怎么做吗?
      猜你喜欢
      • 2020-10-20
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多