HTML5自定义mp3播放器源码
导读:收集整理的这篇文章主要介绍了HTML5自定义mp3播放器源码,觉得挺不错的,现在分享给大家,也给大家做个参考。 audio对象src兼容.ogg .wav .mP3<audio controls src='data/imoo...
收集整理的这篇文章主要介绍了HTML5自定义mp3播放器源码,觉得挺不错的,现在分享给大家,也给大家做个参考。 audio对象
src兼容.ogg .wav .mP3
audio controls src='data/imooc.wav'>
/audio>
width autoplay loop muted静音
audio controls src='data/imooc.wav' autoplay loop width='500' height='500' muted>
/audio>
播放play()
VAR myAudio = new Audio();
myAudio.src = 'data/imooc.wav';
myAudio.play();
BTn.onclick = function(){
myAudio.play();
}
;
暂停pause()
pauseNode.onclick = function(){
myAudio.pause();
}
;
当前播放的时间currentTime
音频总时长duration
//返回音频的总长度 myAudio.addEventListener('canplay',function(){
durationNode.innerHTML = myAudio.duration;
}
);
//更新当前播放的时间 setInterval(function(){
currentNode.innerHTML = myAudio.currentTime;
}
,100);
音频源currentSrc
var myAudio = new Audio();
myAudio.src = 'data/imooc.mp3';
console.LOG(myAudio.currentSrc);
loop循环
myAudio.loop = true;
音频播放结束ended
myAudio.addEventListener('ended',function(){
console.log('音频播放结束');
console.log(myAudio.ended) }
);
重新加载
loadBtn.onclick = function(){
myAudio.load();
}
;
跳转到新的播放位置seeked / seeking
myAudio.addEventListener('seeked',function(){
console.log('seeked');
}
);
myAudio.addEventListener('seeking',function(){
console.log('seeking');
sekingNum++;
seekingNum.innerHTML = sekingNum;
}
);
playbackRate设置当前播放速度
myAudio.playbackRate = '15';
console.log(myAudio.playbackRate)全屏requestFullScreen
btnScreen.onclick = function(){
myAudio.webkitRequestFullScreen();
}
loop 循环
myAudio.loop = true;
volumechange音量改变
myAudio.addEventListener('volumechange',function(){
console.log('音频的声音改变了') }
);
timeupdate音频正在播放状态
myAudio.addEventListener('timeupdate',function(){
console.log('音频正在播放中...') }
)自定义mp3播放器
放图
!doctyPE html>
html>
head>
meta charset="utf-8">
tITle>
/title>
style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
}
.outerNode{
width: 505px;
height: 406px;
position: absolute;
left: 50%;
top: 50%;
margin: -204px 0 0 -253.5px;
border: 1px solid #a6a18d;
border-radius:8px;
box-shadow: 0 0 16px #a6a18d;
}
.innerNode{
width: 503px;
height: 405px;
border-top:1px solid #e1d1b9;
border-left:1px solid #ceccbf;
border-radius: 8px;
overflow: hidden;
border-right:1px solid #ceccbf;
}
.topNode{
width: 100%;
height: 198px;
border-bottom: 1px solid #787463;
background: url(music/pic/fmt01.jpg) center center;
background-size:cover;
transition:.7s;
position: relative;
}
.lineNode{
width: 100%;
height: 46px;
border-top: 1px solid #f9f7ee;
border-bottom: 1px solid #a29d8a;
background: url(musicimage/linebg.jpg) repeat-x;
}
.PRogressNode{
width: 440px;
height: 18px;
float: left;
margin:13px 0 0 28px;
background: url(musicimage/progressbg.jpg) repeat-x;
position: relative;
}
.progressNode .progressleft{
width: 7px;
height: 100%;
position: absolute;
left: 0;
background: url(musicimage/leftNode.jpg);
}
.progressNode .progressright{
width: 7px;
height: 100%;
position: absolute;
right: 0;
background: url(musicimage/rightNode.jpg);
}
.bottomNode{
width: 100%;
height: 157px;
border-top: 1px solid #a29d8a;
background: url(musicimage/bottombg.jpg) repeat-x;
position: relative;
}
.lastNode{
width: 75px;
height: 74px;
position: absolute;
background: url(musicimage/lastBg.png) no-repeat;
left: 118px;
top: 39px;
cursor: pointer;
}
.playNode{
width: 95px;
height: 94px;
position: absolute;
background: url(musicimage/playNode.png) no-repeat;
left: 202px;
top: 29px;
cursor: pointer;
}
.nextNode{
width: 75px;
height: 74px;
background: url(musicimage/rightbg.png) no-repeat;
position: absolute;
left: 306px;
top: 39px;
cursor: pointer;
}
.volumeNode{
width: 37px;
height: 32px;
background: url(musicimage/volume.png) no-repeat;
position: absolute;
right: 43px;
top: 58px;
cursor: pointer;
}
.no_volumeNode{
width: 37px;
height: 32px;
background: url(musicimage/no_volume.png) no-repeat;
position: absolute;
right: 43px;
top: 58px;
cursor: pointer;
}
.trueLine{
position: absolute;
left: 3px;
top: 2px;
height: 12px;
width: 0%;
background: url(musicimage/green_bg.png) repeat-x;
border-radius: 6px;
border-right: 1px solid #787463;
}
.musicName{
color: white;
position: absolute;
bottom: 2px;
left: 5px;
}
/style>
/head>
body>
!-- outerNode 最外层的元素 -->
div class='outerNode'>
!-- innerNode 内层元素 -->
div class='innerNode'>
!-- topNode 封面图元素 -->
div class='topNode'>
!-- 音乐名称 -->
div class='musicName'>
/div>
/div>
!-- lineNode 进度条元素 -->
div class='lineNode'>
!-- 进度条-->
div class='progressNode'>
div class='progressleft'>
/div>
div class='progressright'>
/div>
!-- 真正的进度条 -->
div class='trueLine'>
/div>
/div>
/div>
!-- bottomNode 空间元素 -->
div class='bottomNode'>
!-- lastNode 上一曲的按钮-->
div class='lastNode'>
/div>
!-- playNode 播放暂停的按钮 -->
div class='playNode'>
/div>
!-- nextNode 下一曲的按钮 -->
div class='nextNode'>
/div>
!-- volumeNode 静音或非静音的按钮-->
div class='volumeNode'>
/div>
/div>
/div>
/div>
script type="text/javascript">
//播放暂停的按钮 //playBln 控制播放暂停的布尔值 var playBtn = document.querySelector('.playNode'), playBln = true, //控制声音的按钮 //volumeBln 控制声音的布尔值 volumeNode = document.querySelector('.volumeNode'), volumeBln = true, //进度条的选择器 trueLine = document.querySelector('.trueLine'), //进度条外层的元素 progressNode = document.querySelector('.progressNode'), //最外层元素 outerNode = document.querySelector('.outerNode'), //选择一下封面背景 topNode = document.querySelector('.topNode'), //下一首歌的按钮 nextNode = document.querySelector('.nextNode'), //上一首歌的按钮 lastNode = document.querySelector('.lastNode'), //音乐名称 musicName = document.querySelector('.musicName');
//给播放器添加js //创建audio对象 var myAudio = new Audio();
//给audio对象一个 src //所有的数据存在数组里面 let allMusic = [{
'MusicSrc':'music/mus/AcousticGuitar1.mp3', 'MusicPic':'music/pic/fmt01.jpg', 'MusicName':'AcousticGuitar1' }
,{
'MusicSrc':'music/mus/AmazingGrace.mp3', 'MusicPic':'music/pic/fmt02.png', 'MusicName':'AmazingGrace' }
,{
'MusicSrc':'music/mus/FeelsGood2B.mp3', 'MusicPic':'music/pic/fmt03.jpg', 'MusicName':'FeelsGood2B' }
,{
'MusicSrc':'music/mus/FunBusyIntro.mp3', 'MusicPic':'music/pic/fmt04.jpg', 'MusicName':'FunBusyIntro' }
,{
'MusicSrc':'music/mus/GreenDaze.mp3', 'MusicPic':'music/pic/fmt05.jpg', 'MusicName':'GreenDaze' }
,{
'MusicSrc':'music/mus/Limosine.mp3', 'MusicPic':'music/pic/fmt06.jpg', 'MusicName':'Limosine' }
],Index = 0;
myAudio.src = allMusic[Index].MusicSrc;
//给封面赋值 topNode.style.backgroundImage = 'url('+allMusic[Index].MusicPic+')';
//给音乐名称 musicName.innerHTML = allMusic[Index].MusicName;
//谷歌浏览器不允许直接play //myAudio.play();
//播放暂停的事件 playBtn.onclick = function(){
//myAudio.play();
playBln = !playBln;
if(playBln == false){
myAudio.play();
}
else{
myAudio.pause();
}
}
;
//声音的事件 volumeNode.onclick = function(){
volumeBln = !volumeBln;
if(volumeBln == false){
myAudio.volume = 0;
this.classname = 'no_volumeNode';
}
else{
myAudio.volume = 1;
this.className = 'volumeNode';
}
}
;
//播放时 进度条的长度控制计算 myAudio.addEventListener('timeupdate',function(){
trueLine.style.width = myAudio.currentTime / myAudio.duration * 100 + '%';
}
);
//点击progressNode元素 让进度条直接到达这个位置 progressNode.onclick = function(e){
var ev = e || event;
//算法 就是 算出 点击的位置 在 外层进度条的 多少像素 //需要一个鼠标坐标点 减去 外层元素的 offsetLeft 和 最外层元素的offsetLeft // 320秒 * 0.50 = 160秒 myAudio.currentTime = myAudio.duration * ((ev.clientX - (this.offsetLeft + outerNode.offsetLeft))/this.offsetWidth);
trueLine.style.width = ((ev.clientX - (this.offsetLeft + outerNode.offsetLeft))/this.offsetWidth) * 100 + '%';
}
;
//下一首歌的事件 nextNode.onclick = function(){
Index ++;
if(Index == allMusic.length){
Index = 0;
}
MusicPlayFn();
}
;
//音乐播放的函数 function MusicPlayFn(){
myAudio.src = allMusic[Index].MusicSrc;
myAudio.currentTime = 0;
trueLine.style.width = '0%';
if(playBln == false){
myAudio.play();
}
else{
myAudio.pause();
}
//给封面赋值 topNode.style.backgroundImage = 'url('+allMusic[Index].MusicPic+')';
//给音乐名称 musicName.innerHTML = allMusic[Index].MusicName;
}
//上一首歌的点击事件 lastNode.onclick = function(){
Index --;
if(Index == -1){
Index = allMusic.length-1;
}
MusicPlayFn();
}
;
/script>
/body>
/html>
总结
以上所述是小编给大家介绍的HTML5自定义mp3播放器源码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HTML5自定义mp3播放器源码
本文地址: https://pptw.com/jishu/586020.html
