Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fb34d85

Browse files
committed
Completed Day #11 (skipped a day)
1 parent 66896cc commit fb34d85

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

11 - Custom Video Player/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@
2222
</div>
2323
</div>
2424

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

0 commit comments

Comments
 (0)