有没有办法在下一个/上一个按钮上使用以下Siema布置?

时间:2019-01-20 15:05:01

标签: javascript setinterval siema

我正在使用可爱且简单的Siema脚本制作一个简单的轮播。它每4秒钟自动移动到下一张幻灯片,还允许我添加上一个/下一个按钮,以便用户可以手动更改幻灯片。

这是codepen:https://codepen.io/anon/pen/ebqodx

HTML:

<div class="siema">
  <div><img src="https://pawelgrzybek.com/siema/assets/siema--pink.svg" alt="Siema image" /></div>
  <div><img src="https://pawelgrzybek.com/siema/assets/siema--yellow.svg" alt="Siema image" /></div>
  <div><img src="https://pawelgrzybek.com/siema/assets/siema--pink.svg" alt="Siema image" /></div>
  <div><img src="https://pawelgrzybek.com/siema/assets/siema--yellow.svg" alt="Siema image" /></div>
</div>

<button class="prev">Prev</button>
<button class="next">Next</button>

JS:

// perPage accepts two kind of data as a value

// Number:
// fixed amount of slider for all resolutions

// example:
// const mySiema = new Siema({
//   perPage: 2,
// });


// Object
// more complex configuration allows you to specify
// number of slides dependable of browsers viewport
// example below show single slide on small viewpoer
// 2 slider on scrrens wider than 768px
// 3 slider on scrrens wider than 1024px

// example:
// const mySiema = new Siema({
//   perPage: {
//     768: 2,
//     1024: 3,
//   },
// });
const mySiema = new Siema({
  perPage: 2,
  loop: true,
});
const prev = document.querySelector('.prev');
const next = document.querySelector('.next');

prev.addEventListener('click', () => mySiema.prev());
next.addEventListener('click', () => mySiema.next());

setInterval(() => mySiema.next(), 4000)

但是,当我单击上一个/下一个按钮(以查看特定的“幻灯片”)时,自动播放会继续,并迅速将我从想要查看的幻灯片上移开。

所以我要实现的目的是:当用户使用上一个/下一个按钮时,我希望自动播放停止60秒,以便他们有时间阅读所需的幻灯片。 60秒后,我希望自动播放继续进行。

有什么办法可以做到这一点?

我已经尝试过使用setInterval和其他一些想法,但是似乎无法正常工作。我看到这个人已经达到了我想要的目标:https://codepen.io/anon/pen/aPexBe

但是问题是他使用幻灯片并产生了分页,这是我不想要的。我希望当用户使用下一个/上一个按钮而不是分页按钮时自动播放停止。我不需要。

1 个答案:

答案 0 :(得分:0)

这是具有鼠标拖动验证功能的更新版本。

const mySiema = new Siema({
  perPage: 2,
  loop: true,
});
var wait = 6000; // 6 secounds in ms, increase it as you like.
const prev = document.querySelector('.prev');
const next = document.querySelector('.next');

prev.addEventListener('click', () => { Bind(wait); mySiema.prev();});
next.addEventListener('click', () => { Bind(wait); mySiema.next();});

    var interval;
    var timeout;
    var mouseDown = false;
    function Bind(secound){
      clearInterval(interval);
      clearTimeout(timeout)
      if (secound){
       timeout= setTimeout(function(){
          interval= setInterval(() => mySiema.next(), 4000)
        }, secound)
      }else interval= setInterval(() => mySiema.next(), 4000)
    }

    $('.siema').mousedown(function(event) {
    mouseDown = true;
    }).mouseup(function(){
     var mouseDown = false;
    }).mousemove(function(e){
       if (mouseDown)
         Bind(wait);
    });

    Bind();