1document.addEventListener('DOMContentLoaded', () => { 2 const slider = document.querySelector('.hero-slider'); 3 if (!slider) return; 4 5 const slides = slider.querySelectorAll('.hero-slider__slide'); 6 const dots = slider.querySelectorAll('.hero-slider__dot'); 7 let currentSlide = 0; 8 let autoplayInterval; 9 let touchStartX = 0; 10 let touchEndX = 0; 11 12 // Funzione per cambiare slide 13 const goToSlide = (index) => { 14 // Rimuovi la classe active dalla slide e dot correnti 15 slides[currentSlide].classList.remove('active'); 16 dots[currentSlide].classList.remove('active'); 17 18 // Aggiorna l'indice della slide corrente 19 currentSlide = index; 20 21 // Aggiungi la classe active alla nuova slide e dot 22 slides[currentSlide].classList.add('active'); 23 dots[currentSlide].classList.add('active'); 24 }; 25 26 // Funzione per passare alla slide successiva 27 const nextSlide = () => { 28 const nextIndex = (currentSlide + 1) % slides.length; 29 goToSlide(nextIndex); 30 }; 31 32 // Funzione per passare alla slide precedente 33 const prevSlide = () => { 34 const prevIndex = (currentSlide - 1 + slides.length) % slides.length; 35 goToSlide(prevIndex); 36 }; 37 38 // Gestione click sui dots 39 dots.forEach((dot, index) => { 40 dot.addEventListener('click', () => { 41 goToSlide(index); 42 resetAutoplay(); 43 }); 44 }); 45 46 // Gestione swipe su mobile 47 slider.addEventListener('touchstart', (e) => { 48 touchStartX = e.touches[0].clientX; 49 }); 50 51 slider.addEventListener('touchend', (e) => { 52 touchEndX = e.changedTouches[0].clientX; 53 handleSwipe(); 54 }); 55 56 const handleSwipe = () => { 57 const swipeThreshold = 50; // Soglia minima per considerare un swipe 58 const swipeDistance = touchEndX - touchStartX; 59 60 if (Math.abs(swipeDistance) > swipeThreshold) { 61 if (swipeDistance > 0) { 62 prevSlide(); 63 } else { 64 nextSlide(); 65 } 66 resetAutoplay(); 67 } 68 }; 69 70 // Funzione per gestire l'autoplay 71 const startAutoplay = () => { 72 autoplayInterval = setInterval(nextSlide, 5000); // Cambia slide ogni 5 secondi 73 }; 74 75 const resetAutoplay = () => { 76 clearInterval(autoplayInterval); 77 startAutoplay(); 78 }; 79 80 // Avvia l'autoplay 81 startAutoplay(); 82 83 // Pausa autoplay quando il mouse è sopra lo slider 84 slider.addEventListener('mouseenter', () => { 85 clearInterval(autoplayInterval); 86 }); 87 88 // Riprendi autoplay quando il mouse esce dallo slider 89 slider.addEventListener('mouseleave', () => { 90 startAutoplay(); 91 }); 92});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.