HTML5+JS实现简易的音乐播放器

article/2025/11/5 18:36:49

HTML5+JS实现简易的音乐播放器

播放器实现的功能

  1. 播放/暂停音乐
  2. 切换歌曲,上/下一首歌
  3. 音量最大或静音
  4. 音乐播放时间实时变化
  5. 进度条拖拽
  6. 歌曲图片切换

播放器效果展示

请添加图片描述
请添加图片描述
请添加图片描述

代码展示

html

<div class="musicBox" id="musicBox"><audio src="music/赵季平-门楼.mp3"  id="music">当前浏览器不支持audio</audio><div class="leftControl"></div><div id="mainControl" class="mainControl"></div><div id="stopControl" class="stopControl" style="display:none"></div><div class="rightControl"></div><div class="processControl" ><div id="songName" class="songName">赵季平-门楼</div><div id="songTime" class="songTime">00:00&nbsp;|&nbsp;00:00</div><div id="process" style="width:500px" class="process"></div><div id="processYet" class="processYet"></div></div><div class="voiceEmp"></div><div id="voidProcess" class="voidProcess" style="width:66px"></div><div class="voidProcessYet"  id="voidProcessYet"></div><div class="voiceFull"></div>
</div>
<div class="list"><!-- 插图 --><img src="images/1.png" width="300px" id="pictures" ><!-- 歌单 --><ul id="songList"></ul>
</div>

CSS样式

.musicBox {font: 9px 'Lucida Sans Unicode', 'Trebuchet MS', Arial, Helvetica;background-color: #595959;/*设置边框的弧度值,为3px*/-moz-border-radius: 3px;-webkit-border-radius: 3px;border-radius: 3px;/*阴影*/text-shadow: 0 1px 0 rgba(255,255,255,0.5);-webkit-box-shadow: 10px 10px 25px #ccc;-moz-box-shadow: 10px 10px 25px #ccc;box-shadow: 10px 10px 25px #ccc;/*透明度*/opacity: 0.9;/*基本性质*/padding: 2px 5px;position: absolute;z-index: 9;border-width: 1px;border-style: solid;border-color: #488BF0;width: 775px;height: 50px;border-radius: 10px;
}.leftControl {width: 0px;padding: 10px 10px 10px 10px;float: left;height: 20px;background: url(../images/sk-dark.png) left 2px no-repeat;margin-right: 8px;margin-left: 10px;
}.leftControl:hover {background: url(../images/sk-dark.png) left -30px no-repeat;
}.mainControl {width: 25px;padding: 10px 15px 5px 10px;float: left;height: 20px;background: url(../images/sk-dark.png) -80px -130px no-repeat;
}.mainControl:hover {background: url(../images/sk-dark.png) -80px -166px no-repeat;
}.rightControl {width: 0px;padding: 10px 10px 10px 10px;float: left;height: 20px;background: url(../images/sk-dark.png) left -62px no-repeat;margin-right: 8px;
}.rightControl:hover {background: url(../images/sk-dark.png) left -93px no-repeat;
}.processControl {width: 500px;padding: 5px 10px 10px 10px;float: left;height: 20px;margin-right: 12px;color: #ffffff;
}.processControl .songName {float: left;
}.processControl .songTime {float: right;
}.processControl .process {width: 500px;float: left;height: 2px;cursor: pointer;background-color: #000000;margin-top: 7px;
}.processControl .processYet {width: 0px;position: absolute;height: 2px;left: 131px;top: 30px;cursor: pointer;background-color: #00aaff;
}.voiceEmp {width: 0px;padding: 10px 10px 10px 10px;float: left;height: 17px;background: url(../images/sk-dark.png) -28px -180px no-repeat;margin-right: 2px;
}.voiceEmp:hover {background: url(../images/sk-dark.png) -28px -212px no-repeat;
}.voidProcess {width: 66px;height: 2px;cursor: pointer;background-color: #000;float: left;margin-top: 19px;margin-right: 6px;
}.voidProcessYet {width: 66px;position: absolute;height: 2px;left: 675px;top: 21px;cursor: pointer;background-color: #7A8093;
}.voiceFull {width: 0px;padding: 10px 10px 10px 10px;float: left;height: 17px;background: url(../images/sk-dark.png) -28px -116px no-repeat;
}.voiceFull:hover {background: url(../images/sk-dark.png) -28px -148px no-repeat;
}.stopControl {width: 14px;padding: 10px 10px 5px 10px;float: left;height: 20px;background: url(../images/sk-dark.png) -50px -130px no-repeat;margin-right: 16px;
}.stopControl:hover {background: url(../images/sk-dark.png) -50px -165px no-repeat;
}.list{width: 700px;height: 500px;background-color: #ffd47d;padding-top: 70px;margin-left: 20px;
}
#songList{font-size: 18px;font-weight: bold;color: #FFFFFF;
}
#songList li{margin-top: 5px;
}
#songList li:hover{color: #aa00ff;
}

JS

// 获取音频元素
let music
if(window.HTMLAudioElement){music = document.querySelector('#music');// 播放按钮
}
// 播放按钮
let mainControl = document.querySelector("#mainControl");
// 暂停
let stopControl = document.querySelector("#stopControl");
// 快退,快进,
let leftControl = document.querySelector(".leftControl");
let rightControl = document.querySelector(".rightControl");
// 音量调节
let voiceEmp = document.querySelector('.voiceEmp');
let voiceFull = document.querySelector('.voiceFull');let songName = document.querySelector("#songName");
let process = document.querySelector("#process");
let pictures = document.querySelector("#pictures");
let songList = document.getElementById("songList");mainControl.addEventListener('click',function(){// 播放音乐music.play();mainControl.style.display='none';stopControl.style.display='';timeSpan();
})stopControl.addEventListener('click',function(){// 暂停音乐music.pause();mainControl.style.display='';stopControl.style.display='none';
})
// 播放时间前进或后退
// leftControl.addEventListener('click',function(){
// 	// console.log(music.currentTime);
// 	music.currentTime -= 1.0;
// 	// console.log(music.currentTime);
// })// rightControl.addEventListener('click',function(){
// 	// console.log(music.currentTime);
// 	music.currentTime += 1.0;
// 	// console.log(music.currentTime);
// })voiceEmp.addEventListener('click',function(){music.volume = 0;
})voiceFull.addEventListener('click',function(){music.volume = 1;
})// 格式化时间
function timeDispose(time){let minutes = parseInt(time/60);let seconds = parseInt(time%60);minutes = minutes>10?minutes:"0"+minutes;seconds = seconds>10?seconds:'0'+seconds;return minutes+':'+seconds;
}
// 展示时间
function timeSpan(){setInterval(function(){let songTime = document.querySelector("#songTime");let currenttime = music.currentTime;let totaltime = music.duration;songTime.innerHTML = timeDispose(currenttime)+"|"+timeDispose(totaltime);let processLenth =(currenttime/totaltime)*getWidth("#process");document.querySelector('#processYet').style.width = processLenth+'px';},1000);}// 获取长度
function getWidth(domId){let dom = document.querySelector(domId);let domLenth = dom.style.width;let domLenthInt = domLenth.split('px')[0];return domLenthInt;
}// 切歌
let songs = [{mp3:'music/赵季平-门楼.mp3',name:'赵季平-门楼',tu:'images/1.png',},{mp3:'music/露露娜Ruruna - 夏 日 蒸 汽 波Say So(Japanese_Ver).mp3',name:'夏日蒸汽波SaySo',tu:'images/2.png',},{mp3:'music/趴熊 - スパイス(香辛料)(Cover 东京カランコロン).mp3',name:'香辛料(Cover 东京カランコロン)',tu:'images/3.png',},{mp3:'music/神前暁 (こうさき さとる) - いつもの風景から始まる物語 (从老风景开始的故事).mp3',name:'从老风景开始的故事',tu:'images/10.png',},{mp3:"music/Tenkitsune - Yoshi's New Story.mp3",name:"Yoshi's New Story",tu:'images/5.png',},
]// 将歌名显示到列表上
for (var i =0; i < songs.length; i++) {songList.innerHTML += '<li>' + songs[i].name + '</li>';
}//切歌函数
let changeMusic=function (index) {//换歌曲music.src=songs[index].mp3;//换名称songName.innerHTML=songs[index].name;pictures.src=songs[index].tu;
};
let index=0;//当前播放歌曲索引
//切歌
leftControl.addEventListener("click",function (event) {index--;if(index<=-1){index=songs.length-1;}changeMusic(index);
});
rightControl.addEventListener("click",function (event) {index++;if(index>songs.length-1){index=0;}changeMusic(index);
});
// 播放完毕,自动下一首music.addEventListener("ended",function(){rightControl.click();});
process.addEventListener("click",function (event) {let x=event.offsetX;//获取鼠标所在位置let bfb=x/610*100;processYet.style.width=bfb+"%";music.currentTime=music.duration*+bfb/100;
});

http://chatgpt.dhexx.cn/article/vGlJdwR8.shtml

相关文章

音乐播放器MusicBox

音乐播放器MusicBox 功能界面分析 界面要求较为简洁&#xff0c;仅需两个TextView&#xff0c;用于输出音乐名称及歌手姓名&#xff0c;下方三个ImageButton&#xff0c;用于播放&#xff0c;暂停或切换上一首&#xff0c;下一首歌曲。 实现 总体规划 在MainActivity中&a…

索尼音乐应用android,Sony Music Center

Sony Music Center是全新的索尼音乐中心也是原来的songpal应用&#xff0c;作为sony手机上面的专业播放器的软件&#xff0c;它能够为用户播放各种音乐上面的内容&#xff0c;它可以直接的为用户解析各种音乐的内容&#xff0c;让用户能够随时的在手机上面收听到自己所喜欢的无…

MusicLibrary:一个丰富的音乐播放封装库

code小生,一个专注 Android 领域的技术分享平台 作者&#xff1a;lizixian18链接&#xff1a;https://github.com/lizixian18/MusicLibrary声明&#xff1a;本文是 lizixian18 投稿,转载等请联系作者获得授权。 MusicLibrary 一个丰富的音乐播放封装库&#xff0c;针对快速集成…

MusicBox

MusicBox 编写音乐盒代码&#xff0c;并添加音乐播放的 上一首 和 下一首 控制。 1.添加所需的图片以及音乐文件&#xff1b; 2.编写xml文件&#xff0c;上一首、下一首、暂停、播放按钮以及歌曲的名字和作者 <?xml version"1.0" encoding"utf-8"?&…

Musicplayer

Musicplayer Python 音乐播放器 功能&#xff1a; 首先可以实现本地音乐的播放&#xff0c;能够打开电脑端的文件&#xff0c;文件中进行多选&#xff0c;实现暂停、上一曲、下一曲的功能。在此基础上&#xff0c;完成随机播放列表和网络端下载的功能。 设计方法&#xff1a; 本…

MusicBox(音乐播放器)

这两天做了一个小型的音乐播放器&#xff0c;基本功能都已实现&#xff0c;同时也让我对CSliderCtrl&#xff0c;MCI_OPEN_PARMS以及控件之间的消息映射&#xff0c;数据转换等有了更深入的理解&#xff0c;下面是自己编程的详细过程&#xff1a; 1 首先将控件的位置都摆好&a…

musicbox使用方法_使用Pi MusicBox收听流音乐

musicbox使用方法 在用Raspberry Pi 控制圣诞树灯的项目完成之后&#xff0c;下一个项目是什么&#xff1f; 我最终开始尝试使用Pi Musicbox进行修补&#xff0c;这是Mopidy的Raspbian的一种版本 &#xff0c;它允许用户在“无头”的Raspberry Pi上播放各种流媒体服务&#xff…

推荐一个高大上的网易云音乐命令行播放工具:musicbox

网易云音乐上有很多适合程序猿的歌单&#xff0c;但是今天文章介绍的不是这些适合程序员工作时听的歌&#xff0c;而是一个用Python开发的开源播放器&#xff0c;专门适用于网易云音乐的播放。这个播放器的名称为MusicBox, 特色是用命令行版本执行音乐的播放。 github地址&…

移动开发技术(三)MusicBox

实验要求 使用广播机制&#xff0c;编写音乐盒代码&#xff0c;添加音乐播放的播放、暂停、停止、上一首和下一首控制 实验步骤 一、布局设置 添加一个LinearLayout&#xff0c;选择垂直分布。在里面添加两个LinearLayout&#xff1a; ①music_show&#xff1a;用于展示图片…

Gap Statistic算法详解

在Kmean算法确定K值的问题里&#xff0c;可以使用手肘法&#xff0c;也可以用Gap statistic 算法。手肘法的缺点是不够自动化&#xff0c;而Gap不再需要“手肘法”式的肉眼判断&#xff0c;而只需要找出使Gap Statistic最大的K值即可。因此&#xff0c;Gap和适用于批量化作业。…

IDEA 统计插件Statistic:查看你的代码量

最近接触了一款IDEA统计代码量的插件Statistic&#xff0c;简介一下Statistic的安装。 一、插件下载安装 File->Settings->Plugins&#xff0c;输入Statistic&#xff0c;点击install,安装完后选择重启idea。 二、运行使用 重启完后&#xff0c;点击refesh即可看到代码量…

idea中安装统计代码statistic插件

百度一圈都是直接在idea中安装statistic插件&#xff0c;就不再重复 1.从官网下载&#xff1a;http://plugins.jetbrains.com/plugin/4509-statistic/versions 插件包 到本地 2.选择从本地安装 3. 4.重启idea 5.工具栏

探索 t Statistic的稳健性

探索 t Statistic的稳健性 探索t-statistic 的稳健性 假设有2组数据&#xff0c;x1,…,xm; y1,…,yn。 t-test的假设为两组数据的平均值无差异 即&#xff1a; 令X和Sx为为x数组的平均值和标准差&#xff0c;Y和Sy为y数组的平均值和标准差&#xff1b;则H0的判别式为 在H0…

AS 使用Statistic插件统计代码行数

1.下载插件及安装 点击File → Setting→ Plugins&#xff0c;搜索Statistic插件&#xff0c;点击install按钮安装插件。 2.插件使用 安装成功后重启AS&#xff0c;在View→Tool Windows→Statistic&#xff0c;选择后AS底部会显示Statistic按钮&#xff0c; 点击Refresh按钮…

IDEA 统计Statistic插件下载地址

IDEA 统计Statistic插件安装地址 https://plugins.jetbrains.com/plugin/4509-statistic/versions

idea-统计代码行数Statistic

idea统计代码行数可以用到插件&#xff1a;Statistic。 步骤&#xff1a; File→Settings进入Plugins点击Marketplace搜索Statistic 安装蓝框标出的插件 重启idea后就可以看到效果了&#xff08;图是拿的别人的&#xff0c;基本就是这效果&#xff09;如果没有下边的stat…

IDEA代码统计插件Statistic-统计项目代码文件数及代码行数

今天被问到项目的代码量及代码行数&#xff0c;由于项目代码量还挺多&#xff0c;第一时间想到idea有没有插件可以统计&#xff0c;经过搜索&#xff0c;还真有&#xff0c;当然也可以自己写代码实现。 以下介绍Statistic的安装及使用。 1、在IDEA左上角点击File->Setting…

idea中代码统计工具Statistic的配置与使用

idea中代码统计工具Statistic的配置与使用 有的同学在idea中下载了statistic的插件但是就是没看到这个插件的标志&#xff0c;这是因为插件对应了不同的版本,需要下载对应的版本&#xff1a;https://plugins.jetbrains.com/plugin/4509-statistic/versions 下载完成之后File—…

Intellij idea使用Statistic统计代码行数的方法

一、安装Statistic 1、打开IDEA 2、打开settings进行设置 3、选择plugins&#xff0c;搜索Statistic并安装 4、下载完成之后&#xff0c;重启IDEA&#xff0c;此时Statistic就安装好了 二、使用Statistic 1、安装好Statistic之后我们可以通过以下步骤 将Statistic插件的控制台展…

IDEA - 如何安装Statistic代码统计插件?

插件地址 插件下载 插件选择 &#xff08;1&#xff09;如果IDEA的版本比较新&#xff0c;IDEA会自动选择Statistic对应的版本&#xff1b; &#xff08;2&#xff09;如果IDEA的版本比较老&#xff0c;请使用Statistic的3.8.1版本。 如何安装 1. 在线搜索并安装 2. 离线…