Skip to content

Commit dea388c

Browse files
committed
Implement slideshow
1 parent de6889c commit dea388c

3 files changed

Lines changed: 381 additions & 6 deletions

File tree

‎Sprint-3/slideshow/index.html‎

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,44 @@
33
<head>
44
<meta charset="UTF-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<title>Title here</title>
6+
<title>Cat Slideshow 🐱</title>
7+
<link rel="stylesheet" href="style.css" />
78
<script defer src="slideshow.js"></script>
89
</head>
910
<body>
10-
<img id="carousel-img" src="./assets/cute-cat-a.png" alt="cat-pic" />
11-
<button type="button" id="backward-btn">Backwards</button>
12-
<button type="button" id="forward-btn">Forward</button>
11+
<div class="slideshow-wrapper">
12+
<h1 class="title">🐱 Cat Slideshow</h1>
13+
14+
<div class="image-container">
15+
<img id="carousel-img" src="./assets/cute-cat-a.png" alt="cat-pic" />
16+
<span id="image-counter" class="image-counter">1 / 3</span>
17+
</div>
18+
19+
<div class="controls">
20+
<button type="button" id="backward-btn">&#8592; Back</button>
21+
<button type="button" id="forward-btn">Forward &#8594;</button>
22+
</div>
23+
24+
<div class="auto-controls">
25+
<button type="button" id="auto-forward">&#9654; Auto Play</button>
26+
<button type="button" id="auto-backward">&#9664; Auto Reverse</button>
27+
<button type="button" id="stop">&#9646;&#9646; Stop</button>
28+
</div>
29+
30+
<div class="delay-control">
31+
<label for="delay-input">Delay between images:</label>
32+
<div class="delay-input-row">
33+
<input
34+
type="range"
35+
id="delay-input"
36+
min="500"
37+
max="5000"
38+
step="500"
39+
value="2000"
40+
/>
41+
<span id="delay-display">2.0s</span>
42+
</div>
43+
</div>
44+
</div>
1345
</body>
1446
</html>

‎Sprint-3/slideshow/slideshow.js‎

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,59 @@ const images = [
44
"./assets/cute-cat-c.jpg",
55
];
66

7+
let currentIndex = 0;
8+
let intervalId = null;
79

8-
// Write your code here
10+
function getDelay() {
11+
return parseInt(document.getElementById("delay-input").value, 10);
12+
}
13+
14+
function updateCounter() {
15+
document.getElementById("image-counter").textContent =
16+
`${currentIndex + 1} / ${images.length}`;
17+
}
18+
19+
function showImage(index) {
20+
document.getElementById("carousel-img").src = images[index];
21+
updateCounter();
22+
}
23+
24+
function moveForward() {
25+
currentIndex = (currentIndex + 1) % images.length;
26+
showImage(currentIndex);
27+
}
28+
29+
function moveBackward() {
30+
currentIndex = (currentIndex - 1 + images.length) % images.length;
31+
showImage(currentIndex);
32+
}
33+
34+
function setAutoButtons(disabled) {
35+
document.getElementById("auto-forward").disabled = disabled;
36+
document.getElementById("auto-backward").disabled = disabled;
37+
}
38+
39+
document.getElementById("forward-btn").addEventListener("click", moveForward);
40+
document.getElementById("backward-btn").addEventListener("click", moveBackward);
41+
42+
document.getElementById("auto-forward").addEventListener("click", () => {
43+
setAutoButtons(true);
44+
intervalId = setInterval(moveForward, getDelay());
45+
});
46+
47+
document.getElementById("auto-backward").addEventListener("click", () => {
48+
setAutoButtons(true);
49+
intervalId = setInterval(moveBackward, getDelay());
50+
});
51+
52+
document.getElementById("stop").addEventListener("click", () => {
53+
clearInterval(intervalId);
54+
intervalId = null;
55+
setAutoButtons(false);
56+
});
57+
58+
// Update the delay display label when the slider moves
59+
document.getElementById("delay-input").addEventListener("input", (e) => {
60+
const seconds = (e.target.value / 1000).toFixed(1);
61+
document.getElementById("delay-display").textContent = `${seconds}s`;
62+
});

0 commit comments

Comments
 (0)