使用vue制作一个属于自己的音乐播放器
个人博客原文地址(支持代码预览) /baymaxsjj
前言
其中在想在博客中添加音乐播放功能的时候,也考虑也其它音乐播放器插件如APlayer,页面和功能都能满足要求。而且播放页面也很好看,功能几乎都有。但是我不需要那么多功能,所以我自己尝试制作一个属于自己博客的音乐播放器。页面布局及样式参考APlayer
案例预览(点击预览云墨白-音乐播放器)
<el-row : >
<el-col :md="24" >
<!-- -->
<!-- 音乐图片 -->
<el-avatar :size="66" shape="square" :src="https://www.miaokee.com/2808274.html">
<i ></i>
<!-- -->
</el-avatar>
<!-- 展开模块 -->
<!-- 音乐列表模块 -->
<el-scrollbar >
{<!-- -->{ind+1}}
{<!-- -->{}}
{<!-- -->{}}
</el-scrollbar>
<!-- 标题 作者 -->
{<!-- -->{musics[index].title}}
---
{<!-- -->{musics[index].name}}
<!--暂停 快进 -->
<!-- 音乐拖动条 时间 -->
<el-slider tooltip- :format-tooltip="transTime" @change="getVal()" input-size="mini" :min="0" :max="max" v-model="numb"></el-slider>
<!-- <input v-model="numb" type="range" min="0" :max="max" @input="getVal()" :style="{background: '-webkit-linear-gradient(top, var(--main-5), var(--main-5)) 0% 0% / '+ numb*100/max +'% 100% no-repeat'}"/> -->
{<!-- -->{newTime}}
/
{<!-- -->{time}}
<!-- 循环播放 -->
<!-- 扩展栏 -->
<i :class="muIsShow?'el-icon-arrow-left':'el-icon-arrow-right'"></i>
</el-col>
</el-row>
了解audio
html标签
Your browser does not support the audio element.
属性
内容来源—W3School
js创建(本案例使用)
//创建audio,不会在页面中显示。
var audio=document.createElement("audio");
//设置src,播放地址。
audio.src ='http://url'
事件
内容来源—W3School
案例准备
格式化时间
// 获取音乐总时长
getTime() {
let time = ;
= time;
//总共时长的秒数
= (time);
},
// 时间格式化位00:00
formatTime(value) {
let time = "";
let s = (":");
let i = 0;
for (; i < - 1; i++) {
time += s[i].length == 1 ? "0" + s[i] : s[i];
time += ":";
}
time += s[i].length == 1 ? "0" + s[i] : s[i];
return time;
},
// 把毫秒变成时分秒
transTime(value) {
let time = "";
let h = parseInt(value / 3600);
value %= 3600;
let m = parseInt(value / 60);
let s = parseInt(value % 60);
if (h > 0) {
time = (h + ":" + m + ":" + s);
} else {
time = (m + ":" + s);
}
return time;
},
创建及绑定事件
created() {
// 创建Audio
= ("audio");
();
let that = this;
// 当音乐准备就绪时的操作
(
"canplay",
function () {
("加载成功");
();
= true;
//防止自动播放
if () {
(); // 播放
= true;
}
();
// ()
},
false
),
//快进时的操作,同步时间
(
"timeupdate",
function () {
= ;
= ();
},
false
);
//当音乐播放到结束后的操作,
(
"ended",
function () {
if ( == 0) {
(); // 暂停
= false;
} else if ( == 1) {
(); // 播放
= true;
} else {
== - 1 ? 0 : + 1;
}
},
false
);
},
播放暂停、快进
// 播放暂停
pause() {
if ( !== null && ) {
= true;
if () {
(); // 播放
= true;
} else {
(); // 暂停
= false;
("暂停被调用了");
}
} else {
this.$message({
showClose: true,
message: "音乐还没有加载成功呢!",
type: "warning",
});
}
},
// 快进音乐
getVal() {
if (! || != 0) {
= ;
if ( == ()) {
();
= false;
}
}
},
切换
主要时通过监听器,监听音乐id的变化来切换歌曲
watch: {
index(val) {
if () {
(); // 播放
= true;
}
= false;
= 0;
// ();
= "";
();
},
},