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

Skip to content

Commit 6fd606b

Browse files
committed
adding script wesbos#11
1 parent 53bb0a9 commit 6fd606b

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-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" title="Fullscreen"></button>
2223
</div>
2324
</div>
2425

11 - Custom Video Player/scripts.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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+
const fullscreen = player.querySelector('.fullscreen');
10+
11+
/* Functions */
12+
function togglePlay() {
13+
//Simplified method
14+
//const method = video.paused ? 'play' : 'pause';
15+
//video[method]();
16+
17+
//Longer method
18+
if(video.paused) {
19+
video.play();
20+
} else {
21+
video.pause();
22+
}
23+
}
24+
function updateButton() {
25+
const icon = this.paused ? '►' : '❚ ❚';
26+
toggle.textContent = icon;
27+
}
28+
29+
function skip(){
30+
console.log(this.dataset);
31+
video.currentTime += parseFloat(this.dataset.skip);
32+
};
33+
34+
function handleRangeUpdate(){
35+
video[this.name] = this.value;
36+
}
37+
38+
function handleProgress(){
39+
const percent = (video.currentTime / video.duration ) * 100;
40+
progressBar.style.flexBasis = `${percent}%`;
41+
}
42+
43+
function scrub(e) {
44+
const scrubTime = (e.offsetX / progress.offsetWidth) * video.duration;
45+
video.currentTime = scrubTime;
46+
}
47+
48+
function makeFullscreen() {
49+
video.webkitRequestFullscreen();
50+
}
51+
52+
/* Event listeners */
53+
video.addEventListener('click',togglePlay);
54+
video.addEventListener('play', updateButton);
55+
video.addEventListener('pause', updateButton);
56+
video.addEventListener('timeupdate', handleProgress);
57+
58+
toggle.addEventListener('click',togglePlay);
59+
skipButtons.forEach(button => button.addEventListener('click',skip));
60+
ranges.forEach(range => range.addEventListener('change',handleRangeUpdate));
61+
ranges.forEach(range => range.addEventListener('mousemove',handleRangeUpdate));
62+
63+
let mousedown = false;
64+
progress.addEventListener('click',scrub);
65+
// progress.addEventListener('mousemove', () => {
66+
// if(mousedown) {
67+
// scrub();
68+
// }
69+
// });
70+
progress.addEventListener('mousemove', (e) => mousedown && scrub(e));
71+
progress.addEventListener('mousedown', () => mousedown = true);
72+
progress.addEventListener('mouseup', () => mousedown = false);
73+
74+
fullscreen.addEventListener('click', makeFullscreen);

0 commit comments

Comments
 (0)