JSFiddle - React, Tailwind, and code Playground
by Jordan Sayner
HTML
<div data-slider class="slider">
<div class="slider__slides">
<div class="slider__slide">Slide 1</div>
<div class="slider__slide">Slide 2</div>
<div class="slider__slide">Slide 3</div>
<!-- Add more slides as needed -->
</div>
<button class="prev">Previous</button>
<button class="next">Next</button>
<div class="slider__info">
<span class="current-slide">1</span> / <span class="total-slides"></span>
</div>
</div>
JavaScript
const sliders = document.querySelectorAll('[data-slider]');
sliders.forEach(slider => {
const slides = slider.querySelector('.slider__slides');
const slideElements = slider.querySelectorAll('.slider__slide');
const slideCount = slideElements.length;
const currentSlideElement = slider.querySelector('.current-slide');
const totalSlidesElement = slider.querySelector('.total-slides');
let currentIndex = 0;
// Set the total number of slides in the slider__info element
totalSlidesElement.textContent = slideCount;
const updateSlidePosition = () => {
slides.style.transform = `translateX(-${currentIndex * 100}%)`;
// Update the current slide number
currentSlideElement.textContent = currentIndex + 1;
};
const handleResize = () => {
updateSlidePosition();
};
window.addEventListener('resize', handleResize);
slider.querySelector('.next').addEventListener('click', () => {
currentIndex = (currentIndex + 1) % slideCount;
updateSlidePosition();
});
slider.querySelector('.prev').addEventListener('click', () => {
currentIndex = (currentIndex - 1 + slideCount) % slideCount;
updateSlidePosition();
});
// Initial update to set the correct positions and slide number
updateSlidePosition();
});