Day29 -- Video Speed Controller

目标

今天要来做的是播放速度控制器,可以透过游标移动控制播放速度

Step1

const speed = document.querySelector('.speed');
const bar = speed.querySelector('.speed-bar');
const video = document.querySelector('.flex');

function playRateChange(e){
    console.log(e)
}

speed.addEventListener('mousemove', playRateChange);

第一步,不废话,先选定元素

然後是监听事件,这次监听的区域是下图最右边的长条区域

https://ithelp.ithome.com.tw/upload/images/20201012/20121041nAEqSr4nAn.png

Step2

function speedRateChange(e){
		const y = e.pageY - this.offsetTop;
    const percent = y /this.offsetHeight;
    const height = Math.round(percent * 100) + '%';
    bar.style.height = height;
}

这边跟昨天的游标位置计算方式一样,是要以游标相对html文档的位置,减去元素外缘到页面顶端的距离,这是因为我们无法保证元素是在页面的最顶端

然後就可以计算元素内有颜色区块的长度了

https://ithelp.ithome.com.tw/upload/images/20201012/20121041JJNUd22cx5.png

Step3

function speedRateChange(e) {
		// ...
		const min = 0.5;
		const max = 4;
    const playbackRate = percent * (max - min) + min;
    bar.textContent = playbackRate.toFixed(2) + 'x';
    video.playbackRate = playbackRate;
}

接下来要处理播放的速度了

首先,先设定播放速度的最大/最小值

接着,要算出调整後的播放速度值,以最大/最小值的差,乘上长度百分比,再加上最小值就可以求得罗

最後,将元素的textContent属性,以及将媒体的playbackRate属性设为计算後的结果,就大功告成罗

toFixed()

此方法会使用定点小数表示法(fixed-point notation)来格式化数字

https://ithelp.ithome.com.tw/upload/images/20201012/20121041tjeRQRniaH.png


<<:  全端开发者必懂的「产品设计」——全端开发者内功 IV

>>:  Day28:每天一个小练习 - JS30-13-Slide in on Scroll

GKE (一)

GKE简介 今天要说的是GKE GKE是什麽?由於近年微服务崛起使用k8s的需求大增,衍生各大小公司...

Day 8 Data types, Variables, and Operators (Ⅳ)

Truth Table Let A and B be two Boolean variables. ...

[Day16] TS:在 Mapped Type 中修改物件的 property modifiers:理解 Partial、Required 和 Readonly 的实作

这是我们今天要聊的内容,老样的,如果你已经可以轻松看懂,欢迎直接左转去看同事 Kyle 的精彩文章...

Day 25 [Python ML、资料清理] 处理遗失值

一开始要先看资料 # modules we'll use import pandas as pd i...

AI ninja project [day 7] 语音转文字

开会的时候,是有可能不留下会议记录的, 当会议做出了错误的决定,造成了破口, 就很难追究责任,甚至当...