Skip to content

Commit cee0dce

Browse files
Day 11 - Custom Video Player
1 parent 572a89f commit cee0dce

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

11 - Custom Video Player/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<input type="range" name="playbackRate" class="player__slider" min="0.5" max="2" step="0.1" value="1">
2020
<button data-skip="-10" class="player__button">« 10s</button>
2121
<button data-skip="25" class="player__button">25s »</button>
22+
<button class="player__button fullscreen">[]</button>
2223
</div>
2324
</div>
2425

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// get elements
2+
const video = document.querySelector('.viewer');
3+
const progress = document.querySelector('.progress');
4+
const progressFilled = document.querySelector('.progress__filled');
5+
const skipButtons = document.querySelectorAll('[data-skip]');
6+
const rangeButtons = document.querySelectorAll('.player__slider');
7+
const toggleButton = document.querySelector('.toggle');
8+
const fullscreen = document.querySelector('.fullscreen');
9+
10+
console.log('skip b', skipButtons);
11+
12+
// handle events
13+
function handlePause() {
14+
const method = video.paused ? 'play' : 'pause';
15+
video[method]();
16+
}
17+
18+
function handlePauseEvent() {
19+
const icon = this.paused ? '►' : '❚ ❚';
20+
console.log('icon', icon);
21+
toggleButton.textContent = icon;
22+
}
23+
24+
function handleSkip() {
25+
console.log(this.dataset);
26+
video.currentTime += parseFloat(this.dataset.skip);
27+
}
28+
29+
function handleRange() {
30+
video[this.name] = this.value;
31+
}
32+
33+
function handleTimeUpdate() {
34+
const percent = (this.currentTime / this.duration) * 100;
35+
progressFilled.style.flexBasis = `${percent}%`;
36+
}
37+
38+
function toggleFullScreen() {
39+
if (!document.fullscreenElement) {
40+
video.requestFullscreen();
41+
} else {
42+
if (document.exitFullscreen) {
43+
video.exitFullscreen();
44+
}
45+
}
46+
}
47+
48+
// hook events
49+
toggleButton.addEventListener('click', handlePause)
50+
fullscreen.addEventListener('click', toggleFullScreen);
51+
video.addEventListener('click', handlePause)
52+
video.addEventListener('pause', handlePauseEvent)
53+
video.addEventListener('play', handlePauseEvent)
54+
video.addEventListener('timeupdate', handleTimeUpdate);
55+
56+
skipButtons.forEach(button => button.addEventListener('click', handleSkip))
57+
58+
rangeButtons.forEach(button => button.addEventListener('click', handleRange))

0 commit comments

Comments
 (0)