Skip to content

Commit a7a42ea

Browse files
committed
Complete
1 parent 2b29a8f commit a7a42ea

2 files changed

Lines changed: 64 additions & 55 deletions

File tree

11 - Custom Video Player/scripts-FINISHED.js

Lines changed: 0 additions & 55 deletions
This file was deleted.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
2+
// Get Elements.
3+
const player = document.querySelector('.player');
4+
const video = player.querySelector('.viewer');
5+
const progress = player.querySelector('.progress');
6+
const progressBar = player.querySelector('.progress__filled');
7+
const toggle = player.querySelector('.toggle');
8+
const skipButtons = player.querySelectorAll('[data-skip]');
9+
const ranges = player.querySelectorAll('.player__slider');
10+
11+
12+
// Functions.
13+
14+
function togglePlay() {
15+
if (video.paused) {
16+
video.play();
17+
}else{
18+
video.pause();
19+
};
20+
};
21+
22+
function updateButton() {
23+
const icon = this.paused ? '►' : '❚ ❚';
24+
toggle.textContent = icon;
25+
};
26+
27+
function skip() {
28+
video.currentTime += parseFloat(this.dataset.skip);
29+
};
30+
31+
function handleRangeUpdate() {
32+
video[this.name] = this.value;
33+
}
34+
35+
function handleProgress() {
36+
const percent = (video.currentTime / video.duration) * 100;
37+
progressBar.style.flexBasis = `${percent}%`;
38+
}
39+
40+
function scrub (e) {
41+
const scrubTime = (e.offsetX / progress.offsetWidth) * video.duration;
42+
video.currentTime = scrubTime;
43+
}
44+
45+
46+
// Hook up event listeners.
47+
48+
video.addEventListener('click', togglePlay);
49+
video.addEventListener('play', updateButton);
50+
video.addEventListener('pause', updateButton);
51+
video.addEventListener('timeupdate', handleProgress);
52+
53+
toggle.addEventListener('click', togglePlay);
54+
55+
skipButtons.forEach(button => button.addEventListener('click', skip));
56+
57+
ranges.forEach(range => range.addEventListener('change', handleRangeUpdate));
58+
ranges.forEach(range => range.addEventListener('mousemove', handleRangeUpdate));
59+
60+
let mousedown = false;
61+
progress.addEventListener('click', scrub);
62+
progress.addEventListener('mousemove', (e) => mousedown && scrub(e));
63+
progress.addEventListener('mousedown', () => mousedown = true);
64+
progress.addEventListener('mouseup', () => mousedown = false);

0 commit comments

Comments
 (0)