forked from OpenClassrooms-Student-Center/Print-it-JS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
98 lines (81 loc) · 2.63 KB
/
script.js
File metadata and controls
98 lines (81 loc) · 2.63 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
const slides = [
{
"image": "./assets/images/slideshow/slide1.jpg",
"tagLine": "Impressions tous formats <span>en boutique et en ligne</span>"
},
{
"image": "slide2.jpg",
"tagLine": "Tirages haute définition grand format <span>pour vos bureaux et events</span>"
},
{
"image": "slide3.jpg",
"tagLine": "Grand choix de couleurs <span>de CMJN aux pantones</span>"
},
{
"image": "slide4.png",
"tagLine": "Autocollants <span>avec découpe laser sur mesure</span>"
}
];
const slider = document.querySelector('.slider-content');
const nbLanguages = document.querySelectorAll('.slider-content .card').length;
let i = 0;
document.querySelector('#left')?.addEventListener('click', () => {
let nbDisplayedLanguages = window.innerWidth > 768 ? 4 : 2;
i = i > 0 ? i - 1 : (nbLanguages - nbDisplayedLanguages);
slider.style.transform = 'translateX(-' + (248 * i) + 'px)';
});
document.querySelector('#right')?.addEventListener('click', () => {
let nbDisplayedLanguages = window.innerWidth > 768 ? 4 : 2;
i = (i < nbLanguages - nbDisplayedLanguages) ? i + 1 : 0;
slider.style.transform = 'translateX(-' + (248 * i) + 'px)';
});
changeInProgress = true;
// Images
images.forEach((img, i) => img.classList.toggle('active', i === index));
// Dots
dots.forEach((dot, i) => dot.classList.toggle('dot_selected', i === index));
// Texte
bannerText.innerHTML = slides[index].tagLine;
currentIndex = index;
// Fin de transition (600ms = durée de l'opacité dans le CSS)
setTimeout(() => changeInProgress = false, 600);
}
// === Navigation ===
leftArrow.addEventListener('click', () => {
if (changeInProgress) return;
const newIndex = currentIndex > 0 ? currentIndex - 1 : totalSlides - 1;
goToSlide(newIndex);
resetAutoSlide();
});
rightArrow.addEventListener('click', () => {
if (changeInProgress) return;
const newIndex = (currentIndex + 1) % totalSlides;
goToSlide(newIndex);
resetAutoSlide();
});
dots.forEach(dot => {
dot.addEventListener('click', () => {
if (changeInProgress) return;
const index = parseInt(dot.dataset.index);
goToSlide(index);
resetAutoSlide();
});
});
// === Défilement automatique ===
function startAutoSlide() {
autoSlideInterval = setInterval(() => {
if (changeInProgress) return;
const newIndex = (currentIndex + 1) % totalSlides;
goToSlide(newIndex);
}, 5000);
}
function resetAutoSlide() {
clearInterval(autoSlideInterval);
startAutoSlide();
}
// === Pause au survol ===
banner.addEventListener('mouseenter', () => clearInterval(autoSlideInterval));
banner.addEventListener('mouseleave', startAutoSlide);
// === Démarrage ===
startAutoSlide();
});