Skip to content

Commit 9abf804

Browse files
committed
Add my solution to exercise 28
1 parent bb3f08f commit 9abf804

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

28 - Video Speed Controller/index-START.html

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,40 @@
1515
</div>
1616

1717
<script>
18+
19+
const video = document.querySelector('video')
20+
const speedBar = document.querySelector('.speed')
21+
const speedSlider = document.querySelector('.speed-bar')
22+
23+
const minSpeed = 0.4
24+
const maxSpeed = 4.0
25+
26+
speedBar.addEventListener('mousedown', leftButton(setSpeed))
27+
speedBar.addEventListener('mousemove', leftButton(setSpeed))
28+
29+
//
30+
31+
function setSpeed(e) {
32+
e.preventDefault()
33+
const ratio = e.offsetY / this.offsetHeight
34+
const playbackRate = speed(ratio)
35+
speedSlider.style.height = `${ratio * 100}%`
36+
speedSlider.textContent = `${playbackRate.toFixed(1)}×`
37+
video.playbackRate = playbackRate
38+
}
39+
40+
//
41+
42+
function speed(ratio) {
43+
return minSpeed + (maxSpeed - minSpeed) * ratio
44+
}
45+
46+
function leftButton(callback) {
47+
return function(e) {
48+
if (e.buttons & 1) return callback.call(this, e)
49+
}
50+
}
51+
1852
</script>
1953
</body>
2054
</html>

0 commit comments

Comments
 (0)