vue2使用vant-slider 组件自定义video进度条

模板写法:

	// 配置/样式自行调整
            <video
              :ref="`video${index}`"
              controlslist="nodownload nofullscreen noremoteplayback noplaybackrate"
              class="video_box"
              disablePictureInPicture
              controls
              width="100%"
              height="100%"
              webkit-playsinline="true"
              x5-playsinline=""
              x5-video-player-type="h5"
              x5-video-player-fullscreen=""
              playsinline
              preload="auto"
              :poster="item.cover"
              :src="item.url"
              @timeupdate="updateProgressBar(index)"
              :playOrPause="playOrPause"
              x-webkit-airplay="allow"
              x5-video-orientation="portrait"
              @click="pauseVideo"
              @ended="onPlayerEnded($event)"
              loop="loop"
            ></video>
           <div class="custom-progress-bar"
          >
            <van-slider v-model="videoProgress[index]" @change="onSliderChange($event, index)" button-size="10" active-color="#fff"/>
          </div>

逻辑层写法:

    onSliderChange (e, index) {
      const video = this.$refs[`video${index}`][0]
      video.currentTime = (e / 100) * video.duration
    },
    updateProgressBar (index) {
      const video = this.$refs[`video${index}`][0]
      if (video) {
        this.$set(this.videoProgress, index, (video.currentTime / video.duration) * 100)
      }
    },

重写video样式需要把原生按钮隐藏掉

// 根据你的业务自行调整
video::-webkit-media-controls-fullscreen-button {
    display: none;
}
/* //播放按钮 */
video::-webkit-media-controls-play-button {
    display: none;
}
//进度条
video::-webkit-media-controls-timeline {
    display: none;
    // display: inline-block;
    // position: absolute;
    // bottom: -100px;
}
/* //观看的当前时间 */
video::-webkit-media-controls-current-time-display{
    display: none;
}
/* //剩余时间 */
video::-webkit-media-controls-time-remaining-display {
    display: none;
}
/* //音量按钮 */
video::-webkit-media-controls-mute-button {
    display: none;
}
video::-webkit-media-controls-toggle-closed-captions-button {
    display: none;
}
/* //音量的控制条 */
video::-webkit-media-controls-volume-slider {
    display: none;
}
/* 确保视频进度条始终可见 */
video::-webkit-media-controls-timeline {
  display: inline-box;
}
video::-moz-media-controls-timeline {
  display: inline-box;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值