Skip to content

Commit e212b89

Browse files
committed
Ex28 - Video Speed Controller
1 parent c808bb9 commit e212b89

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>Video Speed Scrubber</title>
7+
<link rel="stylesheet" href="style.css">
8+
</head>
9+
10+
<body>
11+
<div class="wrapper">
12+
<video class="flex" width="765" height="430" src="https://www.dropbox.com/s/nf6jfkwck1glsyo/12%20-%20flex-wrapping-and-columns.mp4?dl=1" loop controls></video>
13+
<div class="speed">
14+
<div class="speed-bar"></div>
15+
</div>
16+
</div>
17+
18+
<script src="script.js" charset="utf-8"></script>
19+
20+
</body>
21+
22+
</html>

28 - Video Speed Controller/script.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
const speed = document.querySelector('.speed');
4+
const bar = speed.querySelector('.speed-bar');
5+
const video = document.querySelector('.flex');
6+
7+
function speedo(event) {
8+
const y = event.pageY - this.offsetTop; // -offsetTop car on veut que l'origine (0,0), soit notre élément, pas la page
9+
const percent = y / this.offsetHeight;
10+
const height = Math.round(percent * 100) + '%';
11+
bar.style.height = height;
12+
13+
const min = 0.4;
14+
const max = 4;
15+
// (n - 0.4) / (4 - 0.4) = percent
16+
// (n - min) / (max - min) = percent
17+
// n - min = percent * (max - min)
18+
const playbackRate = percent * (max - min) + min;
19+
bar.textContent = playbackRate.toFixed(2);
20+
21+
video.playbackRate = playbackRate;
22+
}
23+
24+
speed.addEventListener('mousemove', speedo);

0 commit comments

Comments
 (0)