900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > HTML5+JS实现简易的音乐播放器

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

时间:2023-06-21 02:52:45

相关推荐

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

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

播放器实现的功能

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

播放器效果展示

代码展示

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 musicif(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;});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。