JavaScript实现音乐播放器


Posted in Javascript onAugust 14, 2022

本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下

效果

JavaScript实现音乐播放器

HTML代码

<!--播放器-->
<div id="player">
    <!--播放控件-->
    <div id="playerControl">
        <div class="playerImg">
            <img src="../images/demo3/1.jpg" alt="" width="150" height="150">
            <audio id="audio">
                <source src="../video/1.mp3">
            </audio>
        </div>
        <div id="pcontrol" class="clearfix">
            <button class="prev" title="上一曲"></button>
            <button id="play" class="play1" title="播放"></button>
            <button class="next" title="下一曲"></button>
            <button class="stop" title="停止"></button>
        </div>
    </div>
    <!--播放进度-->
    <div id="progrees">
        <div id="curProgrees"></div>
    </div>
    <!--播放时间-->
    <div id="playTime">
        <span id="presentTime">00 : 00</span>
        <span>/</span>
        <span id="totalTime">00 : 00</span>
    </div>
    <!--音频列表-->
    <div id="playerList">
        <ul>
            <li class="active">
                <span class="mr10">1</span>
                <span>Mascara</span>
                <span>-</span>
                <span>G.E.M. 邓紫棋</span>
            </li>
            <li>
                <span class="mr10">2</span>
                <span>西安人的歌</span>
                <span>-</span>
                <span>范炜与程渤智</span>
            </li>
            <li>
                <span class="mr10">3</span>
                <span>往后余生</span>
                <span>-</span>
                <span>李贰叁</span>
            </li>
        </ul>
    </div>
</div>

Css代码

*{margin:0; padding:0;}
.bd{border:1px solid red;}
.fl{float: left}
.fr{float:right}
.mr10{margin-right:10px;}
ul{list-style: none;}
.clearfix:after{content: ""; height:0; line-height: 0; visibility: hidden;display: block; clear:both;}
body{background:#262626; padding:50px 0; color:#fff; }
 
#player{width:600px; height:400px; background:#130519de;margin:0 auto;}
#playerControl{position:relative;height:200px;}
#playerControl .playerImg{padding:25px; box-sizing: border-box;}
 
/*播放控制界面*/
#pcontrol{position: absolute;left:300px; top:85px;}
#pcontrol button{float:left;margin:0 10px;border:0;outline: none; width:28px; height:28px;background:url("../../images/demo3/player.png") no-repeat}
 
/*暂停*/
#pcontrol .play1{background-position: -8px -8px}
#pcontrol .play1:hover{background-position: -49px -8px}
 
/*播放*/
#pcontrol .play2{background-position: -8px -49px}
#pcontrol .play2:hover{background-position: -49px -49px}
 
/*上一曲*/
#pcontrol .prev{background-position: 0 -112px}
#pcontrol .prev:hover{background-position: -30px -112px}
 
/*下一曲*/
#pcontrol .next{background-position: 0 -141px}
#pcontrol .next:hover{background-position: -30px -141px}
/*停止播放*/
#pcontrol .stop{background-position: 0 -84px}
#pcontrol .stop:hover{background-position: -30px -84px}
 
/*播放列表*/
#playerList{padding:20px 0px}
#playerList ul li{padding:10px 20px; }
#playerList ul li.active,#playerList ul li:hover{background:rgba(0, 0, 0, .4);color:#665975;cursor: pointer}
 
/*播放进度*/
#progrees{width:550px; height:5px; background:#ccc; margin:0 auto;}
#curProgrees{width:0px; height:100%; background:darkolivegreen;}
 
/*播放时间*/
#playTime{padding:10px 25px 0px; text-align: right;}

Js功能代码

window.onload = function (ev) {
    //获取元素
        var play = document.querySelector("#play");//播放按钮
        var audio = document.querySelector("#audio");//音频文件
        var next = document.querySelector(".next");//下一曲
        var prev = document.querySelector(".prev");//上一曲
        var stop = document.querySelector(".stop");//停止
        var playerListLi = playerList.querySelectorAll("li")//播放列表li
        var totalTime = document.querySelector("#totalTime");//总时间
        var presentTime = document.querySelector("#presentTime");//当前时间
 
    //歌曲地址
        var playerMusic = ["../video/1.mp3","../video/2.mp3","../video/3.mp3"];
 
    //1. 点击播放歌曲,再次点击播放暂停
        play.addEventListener("click",startPlay);
    //2.点击切换下一曲
        next.addEventListener("click",theNext);
    //3.点击切换上一曲
        prev.addEventListener("click",thePrev);
    //4.点击停止播放
        stop.addEventListener("click",stopPlay);
 
 
 
    //定义播放函数
        //1.1 定义标杆,判断是否播放歌曲
        var flag = true;
        function startPlay(){
            if(flag){
                play.className="play2";
                play.title = "暂停";
                audio.play();
                //播放进度
                playProgress();
                //播放时间
                playTime();
            }else{
                play.className="play1";
                play.title = "播放";
                audio.pause();
            }
            flag = !flag;
        }
    //定义下一曲
        var n = 0;//定义歌曲索引
        function theNext(){
            n++;
            if(n == playerMusic.length){
                n = 0;
            }
            audio.src = playerMusic[n];
            //歌曲播放
            flag = true;
            startPlay();
            //切换列表
            switchList();
        }
    //定义下一曲
        function thePrev(){
            n--;
            if(n < 0){
                n = playerMusic.length - 1;
            }
            audio.src = playerMusic[n];
            //歌曲播放
            flag = true;
            startPlay();
            //切换列表
            switchList();
        }
    //切换列表
        function switchList(){
            for(var i=0; i<playerListLi.length; i++){
                playerListLi[i].className = "";
            }
            playerListLi[n].className = "active";
        }
    //停止播放
        function stopPlay(){
            //设置当前播放时间为0;,并暂停播放
            audio.currentTime = 0;
            flag = false;
            startPlay();
        }
 
    //播放进度
        function playProgress(){
            //定义计时器
            var timer = null;
            if(flag){
                //开启计时器
                timer = setInterval(function(){
                    if(audio.currentTime >= audio.duration){
                        curProgrees.style.width = progrees.offsetWidth + "px";
                        clearInterval(timer);
                        theNext();
                    }else{
                        curProgrees.style.width = (audio.currentTime/audio.duration)*progrees.offsetWidth + "px";
                    }
 
                },30);
            }else{
                //关闭计时器
                clearInterval(timer);
            }
 
        }
    //播放时间
        function playTime(){
            //当前时间
            var timer2 = null;
            if(flag){
                timer2 = setInterval(function(){
                    //总时间
                    setTime(audio.duration,totalTime);
                    setTime(audio.currentTime,presentTime);
                },1000)
            }else{
                clearInterval(timer2)
            }
        }
    //设置时间
        function setTime(audioTime,obj){
            //总时间
            allMinute = Math.floor(audioTime/60);
            if(allMinute<10){
                allMinute = "0" + allMinute;
            }
            allSecond = Math.floor(audioTime%60);
            if(allSecond<10){
                allSecond = "0" + allSecond;
            }
            var allTime = allMinute + " : " + allSecond;
            obj.innerHTML = allTime;
        }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js判断页面是否加载完成实现代码
Dec 11 Javascript
js模仿java的Map集合详解
Jan 06 Javascript
JavaScript Math 对象常用方法总结
Apr 28 Javascript
纯JS代码实现气泡效果
May 04 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
微信小程序实现多选功能
Nov 04 Javascript
vue中v-for通过动态绑定class实现触发效果
Dec 06 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
Apr 22 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 Javascript
JavaScript实现京东快递单号查询
Nov 30 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 #Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 #Vue.js
输入框跟随文字内容适配宽实现示例
Aug 14 #Javascript
JS开发前端团队展示控制器来为成员引流
Aug 14 #Javascript
JS实现页面炫酷的时钟特效示例
Rust中的Struct使用示例详解
Aug 14 #Javascript
使用Cargo工具高效创建Rust项目
Aug 14 #Javascript
You might like
html中select语句读取mysql表中内容
2006/10/09 PHP
php中的一个中文字符串截取函数
2007/02/14 PHP
PHP计数器的实现代码
2013/06/08 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
小程序实现投票进度条
2019/11/20 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
django中的HTML控件及参数传递方法
2018/03/20 Python
python删除文本中行数标签的方法
2018/05/31 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
悬挂训练绳:TRX
2017/12/14 全球购物
strstr()的简单实现
2013/09/26 面试题
一些关于MySql加速和优化的面试题
2014/01/30 面试题
开业庆典邀请函
2014/01/08 职场文书
运动会通讯稿100字
2014/01/31 职场文书
会计学自荐信
2014/06/03 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
暑期培训心得体会
2014/09/02 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
公司员工手册范本
2015/05/14 职场文书
格林童话读书笔记
2015/06/30 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers