首页前端开发HTMLHTML5自定义mp3播放器源码

HTML5自定义mp3播放器源码

时间2024-01-25 02:13:37发布访客分类HTML浏览225
导读:收集整理的这篇文章主要介绍了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核实处理,我们将尽快回复您,谢谢合作!

html5mp3音频

若转载请注明出处: HTML5自定义mp3播放器源码
本文地址: https://pptw.com/jishu/586020.html
HTML5自定义视频播放器源码 html5响应式开发自动计算fontSize的方法

游客 回复需填写必要信息