Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Slick slider animate back to first slide

Tags:

slick.js

I am trying to make a Slick slider jump back to the first slide after the last slide. The closest answer to this topic I have found is this:

Slick slider goto first slide

But unfortunately it uses the fade animation so it does not have the effect I'm after. What I want is that the slideshow will play until the end and then scroll back to the beginning after the last slide is shown.

There are only three slides in my use case, and I can easily fire a message in the console when the last one is reached, but the slickslider method slickGoTo doesn't work.

(function($) {
  var slider = $('.sightbox__slideshow');
     
     slider.slick({
        arrows: false,
        autoplay: true,
        infinite: true,
      });

      function jumpBack() {
        slider.slick('slickGoTo', 0);
      }

      slider.on('beforeChange', function(event, slick, currentSlide, nextSlide) {
        console.log(currentSlide);
        if (currentSlide === 2 ) {
          console.log('last slide');
          jumpBack();
        }
      });
      
})(jQuery);
.sightbox__slideshow {
  width: 250px;
  padding: 50px;
}

.sightbox__slide--1 {
  background-color: pink;
}
.sightbox__slide--2 {
    background-color: green;
}
.sightbox__slide--3 {
    background-color: yellow;
}
<link href="https://kenwheeler.github.io/slick/slick/slick.css" rel="stylesheet"/>

<div class="sightbox__slideshow">
  <div class="sightbox__slide sightbox__slide--1" id="sightbox__slide--1">
    <div alt="" class="sightbox__slide-img"></div>
    <p class="sightbox__slide-txt">1. first</p>
  </div>
  <div class="sightbox__slide sightbox__slide--2" id="sightbox__slide--2">
    <div alt="" class="sightbox__slide-img"></div>
    <p class="sightbox__slide-txt">2. second</p>
  </div>
  <div class="sightbox__slide sightbox__slide--3" id="sightbox__slide--3">
    <div alt="" class="sightbox__slide-img"></div>
    <p class="sightbox__slide-txt">3. third</p>
  </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://kenwheeler.github.io/slick/slick/slick.js"></script>
like image 340
bparticle Avatar asked Nov 15 '25 12:11

bparticle


1 Answers

You may change the trigger event to afterChange and resort to setTimeout function to stay on the last slide for a while (3 seconds approx).

The slick-slider preventing a custom action on its events can also be overridden using the setTimeout function.

function jumpBack() {
  setTimeout(function() {
    slider.slick("slickGoTo", 0);
  },3000);
}

CODEPEN

Hope this helps.

like image 78
Gibin Ealias Avatar answered Nov 18 '25 15:11

Gibin Ealias



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!