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 相关文章推荐
DHTML Slide Show script图片轮换
Mar 03 Javascript
ajax 文件上传应用简单实现
Mar 03 Javascript
JS链式调用的实现方法
Mar 07 Javascript
深入浅析JavaScript中的constructor
Apr 19 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
JS从非数组对象转数组的方法小结
Mar 26 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
Nov 15 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
angular多语言配置详解
May 16 Javascript
vue实现简单的日历效果
Sep 24 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
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python编程线性回归代码示例
2017/12/07 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
Python self用法详解
2020/11/28 Python
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
万里长城导游词
2015/01/30 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
pandas求平均数和中位数的方法实例
2021/08/04 Python
netty 实现tomcat的示例代码
2022/06/05 Servers