手写原生态的javascript音乐播放器,支持音乐列表播放、带进度条、上一首、下一首、音量、收藏、列表切换等播放器功能。可以参考一下。
--在线演示

//播放列表
var music_list =[
{
"id":"1",
"name":"没那么简单",
"singer":"黄小琥",
"duration":"04:10",
"src":"http://www.bokequ.com/show/yinyue/2/images/jiandan.mp3",
"images":"http://www.bokequ.com/blog/2/images/04.jpg"
},
{
"id":"2",
"name":"留什么给你",
"singer":"孙楠",
"duration":"04:02",
"src":"http://img.bokequ.com/music/geini.mp3",
"images":"http://www.bokequ.com/show/yinyue/2/images/3.jpg"
},
{
"id":"3",
"name":"andy",
"singer":"阿杜",
"duration":"04:19",
"src":"http://img.bokequ.com/music/andy.mp3",
"images":"http://www.bokequ.com/show/yinyue/2/images/andy.jpg"
},
{
"id":"4",
"name":"在他乡",
"singer":"水木年华",
"duration":"03:51",
"src":"http://img.bokequ.com/music/zaitaxiang.mp3",
"images":"http://www.bokequ.com/show/yinyue/9/images/shuinian.jpg"
},
{
"id":"5",
"name":"黄梅戏",
"singer":"慕容晓晓",
"duration":"04:30",
"src":"http://www.bokequ.com/show/yinyue/3/audio/huangmeixi.mp3",
"images":"http://www.bokequ.com/show/yinyue/2/images/huangmeixi.jpg"
},
{
"id":"6",
"name":"笔记",
"singer":"周笔畅",
"duration":"05:14",
"src":"http://www.bokequ.com/blog/2/images/biji.mp3",
"images":"http://www.bokequ.com/blog/2/images/07.jpg"
},
{
"id":"7",
"name":"十指紧扣",
"singer":"张智霖",
"duration":"02:32",
"src":"audio/shizhijikou.mp3",
"images":"img/shizhi.jpg"
},
{
"id":"8",
"name":"黄昏",
"singer":"周传雄",
"duration":"04:12",
"src":"audio/huanghun.mp3",
"images":"img/huanghun.jpg"
},
{
"id":"9",
"name":"当你孤单你会想起谁",
"singer":"张栋梁",
"duration":"02:38",
"src":"audio/gundan.mp3",
"images":"img/gundan.jpg"
},
]
//formateTime(61)--->01:01
//获取各种标签
var player = document.querySelector("#player");
var bz_music = document.querySelector("#bz_music");
//歌曲信息部分
var left_photo = document.querySelector("#left_photo");
var list_title = document.querySelector("#list_title");
var list_singer = document.querySelector("#list_singer");
var process_slide = document.querySelector("#process_slide");
var process = document.querySelector("#process");
var showHide = document.querySelector("#showHide");
//控制按钮部分
var time = document.querySelector("#time");
var btnPlay = document.querySelector("#btnPlay");
var volume_slide = document.querySelector("#volume_slide");
var volume = document.querySelector("#volume");
//播放列表部分
var play_list = document.querySelector("#play_list");
var play_list_area = document.querySelector("#play_list_area");
//动态加载播放列表
function loadPlayList(){
//遍历播放列表
for(var i=0;i<music_list.length;i++){
//将每个对象,分别存到music中
var music = music_list[i];
//创建li标签
var liTag = document.createElement("li");
//创建歌曲名span标签
var spanTitleTag = document.createElement("span");
//创建时长span标签
var spanDurationTag = document.createElement("span");
//为ul添加li标签,子节点
play_list.appendChild(liTag);
//为li标签,添加子节点
liTag.appendChild(spanTitleTag);
liTag.appendChild(spanDurationTag);
//添加内容
spanTitleTag.innerHTML=music.name;
spanDurationTag.innerHTML=music.duration;
//添加类名
spanTitleTag.classList.add("list_title");
spanDurationTag.classList.add("list_time");
//自定义属性
//需要用的时候,直接从标签中取值,不需要和后台交互
liTag.setAttribute("data-index",i);
//当点击每一个li标签的时候
//重新载入歌曲信息(专辑图片、歌曲路径、歌曲名、歌手名)
//播放当前点击的音乐
liTag.addEventListener("click",function(){
//获取每个li标签的歌曲id
var index = this.getAttribute("data-index");
// console.log(index);
//将歌曲id赋给,全局变量play_index
play_index = index;
//调用载入歌曲函数
loadMusic();
//播放音乐
playMusic();
})
}
}
//载入歌曲信息
function loadMusic(){
var music = music_list[play_index];
//改变专辑图片
left_photo.src = music.images;
//改变歌曲名
list_title.innerHTML = music.name;
//改变歌手名
list_singer.innerHTML = music.singer;
//改变歌曲路径
player.src = music.src;
}
//播放,暂停音乐
btnPlay.addEventListener("click",function(){
//paused,表示当前音乐是否为暂停状态
if(player.paused){
//play(),播放当前音乐
playMusic();
}
else {
//pause(),暂停当前音乐
player.pause();
btnPlay.setAttribute("class","btn_play fa fa-play");
}
})
//上一曲
function backword(){
if(play_index==0){
play_index=music_list.length-1;
}
else{
//改变播放序号
play_index--;
}
//重新载入
loadMusic();
//播放
playMusic();
}
//下一曲
function forward(){
if(play_index==music_list.length-1){
play_index=0;
}
else{
//改变播放序号
play_index++;
}
//重新载入
loadMusic();
//播放
playMusic();
}
//播放
function playMusic(){
player.play();
btnPlay.setAttribute("class","btn_play fa fa-pause");
}
//时间转换
function formateTime(time){
if(time>3600){
var hour = parseInt(time/3600);
var minute = parseInt(time%3600/60);
var second = parseInt(time%3600);
hour=hour>=10?hour:"0"+hour;
minute=minute>=10?minute:"0"+minute;
second=second>=10?second:"0"+second;
return hour+":"+minute+":"+second;
}
else{
var minute = parseInt(time/60);
var second = parseInt(time%60);
minute=minute>=10?minute:"0"+minute;
second=second>=10?second:"0"+second;
return minute+":"+second;
}
}
//设置定时器
window.setInterval(function(){
//currentTime,当前播放的秒数!
// console.log(player.currentTime);
time.innerHTML = formateTime(player.currentTime);
//duration,当前音乐的总时长,秒数!!!
var percent = player.currentTime/player.duration;
// console.log(percent);
process_slide.style.width=percent*100+"%";
},100)
//静音
function volumeOff(){
//volume,[0,1]
player.volume=0;
volume_slide.style.width=0;
console.log(player.volume);
}
//最大音
function volumeUp(){
player.volume=1;
volume_slide.style.width="100%";
console.log(player.volume);
}
//通过滑块控制音量大小
volume.addEventListener("click",function(event){
//得到当前点击的位置
var currentVolume = event.offsetX/this.offsetWidth;
console.log(currentVolume);
//设置音量
player.volume=currentVolume;
volume_slide.style.width = currentVolume*100+"%";
})
//通过滑块控制音乐进度
process.addEventListener("click",function(event){
//计算点击位置的百分比
var currentValue = event.offsetX/this.offsetWidth;
//因为我们已经设置了定时器,在实时监控我们当前音乐的变化
//因此,我们通过设置当前播放的音乐时长,影响我们的进度条
player.currentTime = player.duration*currentValue;
})
//显示隐藏播放列表
function showMusicList(){
//当前已经显示播放列表
if(flag){
play_list_area.style.display="none";
bz_music.style.width="500px";
showHide.style.color="#666";
flag=0;
}
else {
play_list_area.style.display="block";
bz_music.style.width="700px";
showHide.style.color="#DDD";
flag=1;
}
}
//初始化
//载入播放列表
loadPlayList();
//播放序号
var play_index=0;
//初始音量
player.volume=0.5;
//初始化显示播放列表
//当flag为1的时候,表示列表显示(当前状态)
//当flag为0的时候,表示列表隐藏(当前状态)
var flag=1;
jquery+html5音频播放器样式_网页音乐播放器代码
---演示地址

html5小型音乐播放器音频播放代码演示http://www.bokequ.com/show/yinyue/19/


评论