vue.js实现点击、拖动进度条播放歌曲事件

进度条可参考本人已写的进度条链接:vue.js实现歌曲播放进度条

效果图:

vue.js实现点击、拖动进度条播放歌曲事件

进度条:

<audio ref="player" autoplay ></audio>

<div class="bar">
    <div class="progressbar" @click="playMusic" ref="runfatbar">
    <div class="greenbar" ref="runbar" >
    <span class="yuan"></span>
    </div>
    </div>
</div>

逻辑实现:

mounted () {
    const music = this.$refs.player  // 音频所在对象
    const musicBar = this.$refs.runbar  // 颜色进度条所在对象
    const musicWidth = this.$refs.runfatbar.offsetWidth // 底部进度条总宽
    
// 监听颜色进度条是否触摸拖动
    musicBar.addEventListener('touchmove', (event) => {
      const events = event.targetTouches[0].pageX // 获得触摸拖动的距离
      if(events <= musicWidth) {
        musicBar.style.width = `${(events / musicWidth) * 100}%` // 计算进度条所在比例宽度
        
        //改变播放状态
        music.pause() // 触摸拖动时停止播放
        //改变播放状态图标
        this.$refs.icon.innerHTML = ("&#xe634;");
      }
    })

// 监听颜色进度条是否触摸拖动结束
    musicBar.addEventListener('touchend', () => {
      const touwidth = (musicBar.offsetWidth / musicWidth) // 计算进度条所在比例
      music.currentTime = music.duration * touwidth // 通过所在比例赋值给音频应在的播放时
        
        // 改变播放状态,进行播放
        music.play()
        this.$refs.icon.innerHTML = ("&#xe6ad;");

      if(touwidth < musicWidth) {
        music.play() // 根据播放时间开始播放
        // 更改播放暂停按钮为播放
        this.$refs.icon.innerHTML = ("&#xe6ad;");
      }else if(touwidth >= musicWidth) {
        music.pause() // 触摸拖动时停止播放
        this.$refs.icon.innerHTML = ("&#xe634;");
      }
    })
  },
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值