Skip to content

Instantly share code, notes, and snippets.

@vensires
Created January 29, 2018 12:24
Show Gist options
  • Save vensires/274ba714079129b37838dde4817d9ff6 to your computer and use it in GitHub Desktop.
Save vensires/274ba714079129b37838dde4817d9ff6 to your computer and use it in GitHub Desktop.
Slick slider adds some .slick-cloned divs before and after the original slide content. These divs don't get the slick-active class but for theming purposes this might be required. The following code adds the .slick-cloned-active class to .slick-cloned elements when active.
(function($) {
// Initialize slick slider on elements having the .slick class.
var slider = $('.slick');
slider.slick({
// There is no reason for cloned divs to appear when infinite is set to false.
infinite: true
});
slider.on('beforeChange', function(event, slick, currentSlide, targetSlide) {
var $targetSlide = $(slick.$slides[targetSlide]),
$clonedSlide;
// The following line will play well if only one slick exists on the page.
slider.find('.slick-cloned').removeClass('slick-cloned-active');
if (targetSlide > currentSlide) {
// Go back.
$clonedSlide = slider.find('[data-slick-index="' + (targetSlide - slick.$slides.length) + '"]');
}
else if (currentSlide > targetSlide) {
// Go forth.
$clonedSlide = slider.find('[data-slick-index="' + (targetSlide + slick.$slides.length) + '"]');
}
if ($clonedSlide && $clonedSlide.length) {
$clonedSlide.addClass('slick-cloned-active');
}
});
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment