photoswipe
by joshmoto
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/easyzoom.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/src/easyzoom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css">
<div id="my-slider">
<figure></figure>
<figure></figure>
<figure></figure>
<figure></figure>
<figure></figure>
<figure></figure>
</div>
CSS
/* my-slider dots active and past css */
#my-slider .slick-dots LI.slick-active BUTTON::before,
#my-slider .slick-dots LI.slick-active BUTTON:focus {
color: red;
opacity: 1 !important;
}
#my-slider .slick-dots LI.past BUTTON::before,
#my-slider .slick-dots LI.past BUTTON:focus {
opacity: 1;
}
#my-slider .slick-dots LI:not(.past) BUTTON:focus {
opacity: .25;
}
/* my-slider demo css not needed */
BODY {
margin: 0;
padding: 20px;
}
#my-slider FIGURE {
height: 120px;
margin: 0;
display: block;
border: 1px solid black;
}
JavaScript
// our slick mySlider
let mySlider = $('#my-slider').slick({
slidesToShow: 1,
slidesToScroll: 1,
dots: true,
arrows: false,
adaptiveHeight: true,
autoplay: true,
pauseOnHover: false,
pauseOnFocus: false,
autoplaySpeed: 50000
});
// our mySlider dots
let dots = $('.slick-dots > LI', mySlider);
// before mySlider change slick event
mySlider.on('beforeChange', function(event, slick, currentSlide, nextSlide) {
// remove dot past classes on dots after next slide dot
$(dots[nextSlide]).nextAll().removeClass('past');
// add dot past classes on dots before next slide dot
$(dots[nextSlide]).prevAll().addClass('past');
});