【金秋打卡】第23天 进度条的实现

2022/11/16 4:24:15

本文主要是介绍【金秋打卡】第23天 进度条的实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:TypeScript封装播放器组件

课程章节:第5章 弹出层中的Video播放器组件开发 5.7

课程讲师:西门老舅

课程内容:

今天学习的内容是播放进度的联动,随着视频播放进度条自动更新进度。

playing 方法中,通过 video.currentTime 可以获取最新的进度,除以 video.duration 就能计算出此时播放进度的比例,然后动态修改进度条的width 即可。

同时通过 video.buffered.end(0) 可以获取视频缓存节点的时间,它永远大于 currentTime,可以用它来计算缓存的进度。

首先在 css 中,将进度条有关的 width 样式全部重置为 0:

.video-progress-now {
  width: 0;
}

.video-progress-suc {
  width: 0;
}

然后通过相关 API 去动态设置进度:

handle() {
    // 进度条位置
    let currentProcess = this.tempContainer.querySelector('.video-progress-now') as HTMLElement
    let sucProcess = this.tempContainer.querySelector('.video-progress-suc') as HTMLElement
    let barProcess = this.tempContainer.querySelector('.video-progress-bar') as HTMLElement


    function playing () {
      // 展示当前时长
      (startTimeElm as HTMLElement).innerHTML = formateTime(videoElm.currentTime as number)

      // 计算位置比例
      let scale = videoElm.currentTime / videoElm.duration
      let sucScale = videoElm.buffered.end(0) / videoElm.duration

      currentProcess.style.width = scale * 100 + '%'
      barProcess.style.width = scale * 100 + '%'
      sucProcess.style.width = sucScale * 100 + '%'
    } 
}

课程收获

这节课实现了播放器组件的进度条相关功能,主要借助 video 元素的 currentTime,duration 和 buffered 这三个属性。在此基础上还可以进行完善,实现拖拽滑块更新进度,点击进度条更新进度的功能。

图片描述



这篇关于【金秋打卡】第23天 进度条的实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程