-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathscript.js
More file actions
84 lines (68 loc) · 2.42 KB
/
Copy pathscript.js
File metadata and controls
84 lines (68 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
let currentSlide = 0;
const slides = document.querySelectorAll('.slide');
const dotsContainer = document.querySelector('.slide-dots');
let isTransitioning = false;
// Create dots
slides.forEach((_, index) => {
const dot = document.createElement('div');
dot.classList.add('dot');
if (index === 0) dot.classList.add('active');
dot.addEventListener('click', () => goToSlide(index));
dotsContainer.appendChild(dot);
});
const dots = document.querySelectorAll('.dot');
function updateSlides() {
slides.forEach((slide, index) => {
if (index === currentSlide) {
slide.classList.add('active');
dots[index].classList.add('active');
} else {
slide.classList.remove('active');
dots[index].classList.remove('active');
}
});
}
function changeSlide(direction) {
if (isTransitioning) return;
isTransitioning = true;
const nextSlide = (currentSlide + direction + slides.length) % slides.length;
// Add transition class to current slide
slides[currentSlide].style.transform = `scale(0.95)`;
slides[currentSlide].style.opacity = '0';
// Update current slide
currentSlide = nextSlide;
// Reset and show new slide
setTimeout(() => {
slides[currentSlide].style.transform = 'scale(1)';
slides[currentSlide].style.opacity = '1';
updateSlides();
isTransitioning = false;
}, 300);
}
function goToSlide(index) {
if (isTransitioning || index === currentSlide) return;
isTransitioning = true;
const direction = index > currentSlide ? 1 : -1;
// Add transition class to current slide
slides[currentSlide].style.transform = `scale(0.95)`;
slides[currentSlide].style.opacity = '0';
// Update current slide
currentSlide = index;
// Reset and show new slide
setTimeout(() => {
slides[currentSlide].style.transform = 'scale(1)';
slides[currentSlide].style.opacity = '1';
updateSlides();
isTransitioning = false;
}, 300);
}
// Auto slide every 2 seconds
let autoSlideInterval = setInterval(() => changeSlide(1), 2000);
// Pause auto-slide on hover
const slideshowContainer = document.querySelector('.slideshow-container');
slideshowContainer.addEventListener('mouseenter', () => {
clearInterval(autoSlideInterval);
});
slideshowContainer.addEventListener('mouseleave', () => {
autoSlideInterval = setInterval(() => changeSlide(1), 2000);
});