I'm a beginner and I'm having a hard time trying to implement autoplay to my image slider.
I guess I would have to use setTimeout() but I can't tell where. I was taking a look at the w3schools tutorial and I've tried to add the animation by creating an autoPlay() function, using a for loop, setTimeout, and calling the function inside init(), but that didn't work. Could someone help me? I appreciate it
Here's my code:
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <script src="https://kit.fontawesome.com/a7d8945663.js" crossorigin="anonymous" ></script> <title>Image Slider</title> </head> <body> <div class="wrapper"> <div class="slide-btn-prev"><i class="fas fa-chevron-left"></i></div> <div class="container-slider"> <div class="slide-img"> <img src="./img/odin.png" alt="" /> </div> <div class="slide-img"> <img src="./img/web-1.jpeg" alt="" /> </div> <div class="slide-img"> <img src="./img/web-2.jpg" alt="" /> </div> </div> <div class="slide-btn-next"><i class="fas fa-chevron-right"></i></div> </div> <div class="navigation-dots"></div> <script src="main.js"></script> </body> </html> JS
const slideImage = document.querySelectorAll('.slide-img'); const slideContainer = document.querySelector('.container-slider'); const nextBtn = document.querySelector('.slide-btn-next'); const prevBtn = document.querySelector('.slide-btn-prev'); const navigationDots = document.querySelector('.navigation-dots'); let numberOfImages = slideImage.length; let slideWidth = slideImage[0].clientWidth; let currentSlide = 0; //set up slider function init() { slideImage.forEach((img, i) => { img.style.left = i * 100 + '%'; }); slideImage[0].classList.add('active'); createNavigationDots(); } //create navigatiton dots function createNavigationDots() { for (let i = 0; i < numberOfImages; i++) { const dot = document.createElement('div'); dot.classList.add('single-dot'); navigationDots.appendChild(dot); dot.addEventListener('click', () => { goToSlide(i); }); } navigationDots.children[0].classList.add('active'); } //next & prev buttons nextBtn.addEventListener('click', () => { if (currentSlide >= numberOfImages - 1) { goToSlide(0); return; } currentSlide++; goToSlide(currentSlide); }); prevBtn.addEventListener('click', () => { if (currentSlide <= 0) { goToSlide(numberOfImages - 1); return; } currentSlide--; goToSlide(currentSlide); }); function goToSlide(slideNumber) { slideContainer.style.transform = 'translateX(-' + slideWidth * slideNumber + 'px)'; currentSlide = slideNumber; setActiveClass(); } function setActiveClass() { //set active class to slide let currentActive = document.querySelector('.slide-img.active'); currentActive.classList.remove('active'); slideImage[currentSlide].classList.add('active'); //set active class to dot let currentDot = document.querySelector('.single-dot.active'); currentDot.classList.remove('active'); navigationDots.children[currentSlide].classList.add('active'); } init(); https://stackoverflow.com/questions/66095094/how-to-add-autoplay-to-image-slider-in-vanilla-js February 08, 2021 at 10:07AM
没有评论:
发表评论