vue音乐卡住_Vue实现mp3音乐播放及动态进度条

这篇博客记录了如何在Vue项目中实现点击播放mp3音乐并同步更新进度条的功能。通过HTML5 audio标签引入音频,结合data中的状态控制播放与暂停,并使用定时器计算音乐播放的百分比来驱动进度条变化。文章提供了完整的Vue组件代码示例,有助于理解该功能的实现。
摘要由CSDN通过智能技术生成

今天碰到一个Vue点击mp3播放及进度条动态走动的小功能,记录一下:

首先是通过HTML5 audio标签引入音频:

在data中静态定义我们需要的数据及定义调用点击方法,并获取当前mp3的时间长短,通过定时器转换成百分比实现进度条的播放走动:

export default {

props: ['link'],

data () {

return {

isStore: true,

progress: '0%',

footer: {

title: '一条狗的使命',

subTitle: '俗事杂谈论坛直播',

startIcon: './static/img/start.svg',

stopIcon: './static/img/stop.svg',

imgUrl: './static/img/header1.jpg',

songs: './static/music/aixiangsui.mp3'

}

}

},

mounted: function () {

document.getElementById('musicMp3').pause()

this.changeProgress()

},

methods: {

changeStart: function () {

this.isStore = !this.isStore

const musicMp3 = document.getElementById('musicMp3')

if (!this.isStore) {

musicMp3.play()

} else {

musicMp3.pause()

}

},

changeProgress: function () {

const musicMp3 = document.getElementById('musicMp3')

const timer = setInterval(() => {

const numbers = musicMp3.currentTime / musicMp3.duration

let perNumber = (numbers * 100).toFixed(2)

if (perNumber >= 100) {

this.isStore = true

this.progress = 0

clearInterval(timer)

}

perNumber += '%'

this.progress = perNumber

}, 30)

}

}

}

给添加的结构定义样式(css调用有一些是定义的全局变量,需要注意):

.x-footer{

position: fixed;

background-color: $primary;

width: 100%;

display: flex;

justify-content: space-between;

bottom: 0;

left: 0;

padding: 20px;

.x-meida{

display: inline-flex;

.x-meida-img{

width: 88px;

height: 88px;

overflow: hidden;

@include border-radius(5px);

> img{

width:100%;

}

}

.x-media-name{

padding: 10px 20px;

color: #ffffff;

text-align: left;

> h3{

}

}

}

.x-media-btn{

width: 56px;

height: 56px;

@include border-radius(50%);

border: 3px solid #ffffff;

padding: 10px;

align-self: center;

audio{

display: none;

}

> img{

width: 100%;

}

}

.x-media-menu{

display: inline-flex;

width: 43px;

height: 43px;

align-self: center;

> img{

width: 100%;

}

}

}

.x-mp3-progress{

width: 100%;

position: absolute;

height: 6px;

overflow: hidden;

bottom: 0;

left: 0;

.x-now-progress{

position: relative;

@extend %transition;

height: 6px;

background-color: $orange;

}

}

这样媒体mp3播放就完成。下面是媒体播放的vue静态项目,如果您没太明白,可以用作参考: https://github.com/mralins/xinfeeFM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值