Skip to content

Commit 005765e

Browse files
committedDec 15, 2016
Challenge 11 complete
1 parent 389d243 commit 005765e

File tree

2 files changed

+52
-13
lines changed

2 files changed

+52
-13
lines changed
 
+16-13
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,30 @@
11
<!DOCTYPE html>
22
<html lang="en">
3+
34
<head>
45
<meta charset="UTF-8">
56
<title>HTML Video Player</title>
67
<link rel="stylesheet" href="style.css">
78
</head>
9+
810
<body>
911

10-
<div class="player">
11-
<video class="player__video viewer" src="https://player.vimeo.com/external/194837908.sd.mp4?s=c350076905b78c67f74d7ee39fdb4fef01d12420&profile_id=164"></video>
12+
<div class="player">
13+
<video class="player__video viewer" src="https://player.vimeo.com/external/194837908.sd.mp4?s=c350076905b78c67f74d7ee39fdb4fef01d12420&profile_id=164"></video>
1214

13-
<div class="player__controls">
14-
<div class="progress">
15+
<div class="player__controls">
16+
<div class="progress">
1517
<div class="progress__filled"></div>
16-
</div>
17-
<button class="player__button toggle" title="Toggle Play"></button>
18-
<input type="range" name="volume" class="player__slider" min=0 max="1" step="0.05" value="1">
19-
<input type="range" name="playbackRate" class="player__slider" min="0.5" max="2" step="0.1" value="1">
20-
<button data-skip="-10" class="player__button">« 10s</button>
21-
<button data-skip="25" class="player__button">25s »</button>
22-
</div>
23-
</div>
18+
</div>
19+
<button class="player__button toggle" title="Toggle Play"></button>
20+
<input type="range" name="volume" class="player__slider" min=0 max="1" step="0.05" value="1">
21+
<input type="range" name="playbackRate" class="player__slider" min="0.5" max="2" step="0.1" value="1">
22+
<button data-skip="-10" class="player__button">« 10s</button>
23+
<button data-skip="25" class="player__button">25s »</button>
24+
</div>
25+
</div>
2426

2527
<script src="scripts.js"></script>
2628
</body>
27-
</html>
29+
30+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const player = document.querySelector('.player'),
2+
video = player.querySelector('.viewer'),
3+
progress = player.querySelector('.progress'),
4+
progressBar = player.querySelector('.progress__filled'),
5+
toggle = player.querySelector('.toggle'),
6+
skipButtons = player.querySelectorAll('[data-skip]'),
7+
ranges = player.querySelectorAll('.player__slider');
8+
9+
let togglePlay = () => video[video.paused ? 'play' : 'pause'](),
10+
updateButton = () => toggle.textContent = video.paused ? '►' : '❚ ❚',
11+
handleProgress = () => progressBar.style.flexBasis = `${(video.currentTime / video.duration) * 100}%`,
12+
scrub = (e) => video.currentTime = ((e.offsetX / progress.offsetWidth) * video.duration);
13+
14+
15+
video.addEventListener('click', togglePlay);
16+
video.addEventListener('play', updateButton);
17+
video.addEventListener('pause', updateButton);
18+
video.addEventListener('timeupdate', handleProgress);
19+
20+
toggle.addEventListener('click', togglePlay);
21+
22+
let mousedown = false;
23+
progress.addEventListener('click', scrub);
24+
progress.addEventListener('mousemove', (e) => mousedown && scrub(e));
25+
progress.addEventListener('mousedown', () => mousedown = true);
26+
progress.addEventListener('mouseup', () => mousedown = false);
27+
28+
skipButtons.forEach(button => {
29+
button.addEventListener(
30+
'click', () => video.currentTime += parseFloat(button.dataset.skip));
31+
});
32+
33+
ranges.forEach(range => {
34+
range.addEventListener('change', () => video[range.name] = range.value);
35+
range.addEventListener('mousemove', () => video[range.name] = range.value);
36+
});

0 commit comments

Comments
 (0)
Please sign in to comment.