为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第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 这三个属性。在此基础上还可以进行完善,实现拖拽滑块更新进度,点击进度条更新进度的功能。

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消