html5模仿手机音乐播放器(添加音乐进度条和时长)

今天用html+js+cs写了一个类似手机音乐播放器的小东东,代码规范性不是很好,高手切勿喷,新手可以看看,其中歌词同步js代码参考了一个老师的代码。自己添加的是点击按钮页面滑动,和上一曲下一曲播放,和歌曲列表点击播放,还有进度条的同步,实时音乐时间和音乐总时长。高手勿喷,本人小白。原谅原谅。

以下是部分截图

下面是部分代码

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>zzk的音乐播放器</title>
<link href="css/public.css" rel="stylesheet" type="text/css" />
<link href="css/index.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="favicon.ico"></head>
</head>

<body>
<div id="box">
	<div class="header">
    	<img src="images/1.png" width="320" height="23">
        <div id="nav">
        	<div id="page_up"></div>
             <p id="name"></p>
            <!-- <p  style="display:none">hhhhhh</p>
              <p style="display:none">jgggggg</p>-->
             <div id="page_under"></div>
        </div>
    </div>
    <div id="content">
        <div id="contentbox">
            <div id="page1" >
                <p id="songone">天造地设-胖胖胖</p>
                <p id="songtwo">光辉岁月-Beyond</p>
                <p id="songthree">小幸运-谭嘉仪</p>
            </div>
            <div id="page2">
                <h3 id="singer">胖胖胖</h3>
                <div id="im" class="im" >
                    
                </div>
            </div>
            <div id="page3">
                
            </div>
        </div>
    </div>
    <div class="pro">
    	<P id="str">00:00</P>
        <div class="tiao">
        	<img src="images/进度条.png" width="300" height="20" id="jdt">
        </div>
        <P id="end">00:00</P>
    </div>
    <div class="control">
    	<div id="up"><img src="images/上一曲.png" width="50" height="50"></div>
        <div id="play"></div>
        <div id="next"><img src="images/下一曲.png" width="50" height="50"></div>
    </div>
    <audio src="" id="myMusic"></audio>
    <textarea id="text" style="display:none">
                   
    </textarea>
     <textarea id="onesongtxt" style="display:none">
                    [00:00.22]天造地设 - 胖胖胖
                    [00:01.95]词:芮英杰
                    [00:02.98]曲:芮英杰
                    [00:04.03]编曲:尹一鸣
                    [00:05.27]制作人:郑来君
                    [00:21.84]曾几何时我们还不断计较着是非
                    [00:26.31]也没想过最后谁会成为谁的谁
                    [00:30.36]一个人睡
                    [00:32.06]又一个人醉
                    [00:34.01]彼此在单行道上慢慢枯萎
                    [00:37.96]后来我成为了你命中的那个另类
                    [00:42.29]你也成为了我心中的最珍贵
                    [00:45.98]互相依偎
                    [00:47.96]那四目相对
                    [00:50.00]只为这一瞬间的美
                    [00:52.59]就无悔
                    [00:54.01]我愿意化作为你遮风挡雨的衣被
                    [00:58.20]因为我们是那天造地设的一对
                    [01:02.13]人生不完美
                    [01:04.15]陪你去体会
                    [01:06.13]用时间熬出幸福的滋味
                    [01:10.03]我愿意化一颗树让你安稳的依偎
                    [01:14.10]因为我们是要白头到老的一对
                    [01:18.17]依着我的背
                    [01:20.10]守着你的美
                    [01:22.31]余生所有时间里
                    [01:24.63]相知相随
                    [01:43.66]回想当初我们总是会跟自己作对
                    [01:48.21]也习惯了夜深时候不需要人陪
                    [01:52.40]独自流泪
                    [01:54.05]又各自后悔
                    [01:55.98]去品尝爱情那孤单的滋味
                    [02:00.11]后来的我们也总算是慢慢的学会
                    [02:04.16]在余生的日子里互相定了那称谓
                    [02:08.17]不再后退
                    [02:09.96]去伴你入睡
                    [02:11.89]只为那一辈子的美
                    [02:14.49]就无悔
                    [02:16.00]我愿意化作为你遮风挡雨的衣被
                    [02:20.15]因为我们是那天造地设的一对
                    [02:24.16]人生不完美
                    [02:26.15]陪你去体会
                    [02:28.16]用时间熬出幸福的滋味
                    [02:31.96]我愿意化一颗树让你安稳的依偎
                    [02:36.05]因为我们是要白头到老的一对
                    [02:40.16]依着我的背
                    [02:42.16]守着你的美
                    [02:44.18]余生所有时间里
                    [02:46.68]相知相随
                    [02:51.40]我愿意化作为你遮风挡雨的衣被
                    [02:55.60]因为我们是那天造地设的一对
                    [02:59.76]人生不完美
                    [03:01.69]陪你去体会
                    [03:03.64]用时间熬出幸福的滋味
                    [03:07.38]我愿意化一颗树让你安稳的依偎
                    [03:11.62]因为我们是要白头到老的一对
                    [03:15.59]依着我的背
                    [03:17.54]守着你的美
                    [03:19.65]余生所有时间里
                    [03:22.47]相知相随
                    [03:50.47]
    </textarea>
    <textarea id="twosongtxt" style="display:none">
                    [00:02.01]光辉岁月 - Beyond
                    [00:28.96]钟声响起归家的讯号
                    [00:33.28]在他生命里仿佛带点唏嘘
                    [00:41.96]黑色肌肤给他的意义
                    [00:46.44]是一生奉献肤色斗争中
                    [00:55.05]年月把拥有变做逝去
                    [01:01.41]疲倦的双眼带着期望
                    [01:07.88]今天只有残留的躯壳
                    [01:11.50]迎接光辉岁月
                    [01:14.71]风雨中抱紧自由
                    [01:20.84]一生经过彷徨的挣扎
                    [01:24.49]自信可改变未来
                    [01:27.73]问谁又能做到
                    [01:43.51]可否不分肤色的界限
                    [01:47.96]在这土地里 不分你我高低
                    [01:56.55]缤纷色彩显出的美丽
                    [02:00.97]是因它没有分开每种色彩
                    [02:09.45]年月把拥有变做失去
                    [02:15.77]疲倦的双眼带着期望
                    [02:22.43]今天只有残留的躯壳 
                    [02:26.02]迎接光辉岁月
                    [02:29.34]风雨中抱紧自由
                    [02:35.16]一生经过彷徨的挣扎
                    [02:39.05]自信可改变未来
                    [02:42.25]问谁又能做到
                    [03:23.99]今天只有残留的躯壳 
                    [03:27.65]迎接光辉岁月
                    [03:30.86]风雨中抱紧自由
                    [03:36.83]一生经过彷徨的挣扎
                    [03:40.60]自信可改变未来
                    [03:43.90]问谁又能做到
                    [03:59.69]今天只有残留的躯壳 
                    [04:03.21]迎接光辉岁月
                    [04:06.60]风雨中抱紧自由
                    [04:12.67]一生经过彷徨的挣扎
                    [04:16.24]自信可改变未来
                    [04:19.56]问谁又能做到
                    [04:35.31]今天只有残留的躯壳 
                    [04:38.89]迎接光辉岁月
                    [04:42.11]风雨中抱紧自由
                    [04:48.10]一生经过彷徨的挣扎
                    [04:52.02]自信可改变未来
                    [04:56.02]
    </textarea>
     <textarea id="threesongtxt" style="display:none">
                    [00:00.64]小幸运 - 谭嘉仪
                    [00:02.15]词:徐世珍&吴辉福
                    [00:03.70]曲:JerryC
                    [00:04.14]编曲:JerryC
                    [00:13.77]我听见雨滴落在青青草地
                    [00:19.89]我听见远方下课钟声响起
                    [00:25.74]可是我没有听见你的声音
                    [00:30.74]认真 呼唤我姓名
                    [00:37.92]爱上你的时候还不懂感情
                    [00:44.12]离别了才觉得刻骨 铭心
                    [00:50.09]为什么没有发现遇见了你
                    [00:54.70]是生命最好的事情
                    [01:00.30]也许当时忙着微笑和哭泣
                    [01:06.36]忙着追逐天空中的流星
                    [01:12.12]人理所当然的忘记
                    [01:16.55]是谁风里雨里一直默默守护在原地
                    [01:24.44]原来你是我最想留住的幸运
                    [01:29.69]原来我们和爱情曾经靠得那么近
                    [01:35.67]那为我对抗世界的决定
                    [01:40.29]那陪我淋的雨
                    [01:43.28]一幕幕都是你 一尘不染的真心
                    [01:50.60]与你相遇 好幸运
                    [01:53.96]可我已失去为你泪流满面的权利
                    [01:59.98]但愿在我看不到的天际
                    [02:04.63]你张开了双翼
                    [02:07.68]遇见你的注定 她会有多幸运
                    [02:27.28]青春是段跌跌撞撞的旅行
                    [02:33.44]拥有着后知后觉的美丽
                    [02:39.55]来不及感谢是你给我勇气
                    [02:44.22]让我能做回我自己
                    [02:49.72]也许当时忙着微笑和哭泣
                    [02:55.55]忙着追逐天空中的流星
                    [03:01.61]人理所当然的忘记
                    [03:06.03]是谁风里雨里一直默默守护在原地
                    [03:13.79]原来你是我最想留住的幸运
                    [03:19.05]原来我们和爱情曾经靠得那么近
                    [03:25.17]那为我对抗世界的决定
                    [03:29.68]那陪我淋的雨
                    [03:32.56]一幕幕都是你 一尘不染的真心
                    [03:39.89]与你相遇 好幸运
                    [03:43.40]可我已失去为你泪流满面的权利
                    [03:49.32]但愿在我看不到的天际
                    [03:53.97]你张开了双翼
                    [03:56.98]遇见你的注定
                    [04:00.47]Oh 她会有多幸运
                    [04:18.00]
    </textarea>
</div>
</body>
<script type="text/javascript" src="js/index.js"></script>
</html>

 

 

 

 

 

上下曲按钮点击事件
// JavaScript Document
	var oPlay=document.getElementById("play");
	var oimg=document.getElementById("im");
	var myMusic=document.getElementById("myMusic");
	var onOff=true;//播放与暂停
	var up=document.getElementById("page_up");//上一级页面
	var under=document.getElementById("page_under");//下一级页面
	var con=document.getElementById("contentbox");
	var upnum=0;//判断页面索引值
	var num1=0;//判断页面索引值

	var text=document.getElementById("text");
	var songone=document.getElementById("songone");//获得songone的标签
	var songtwo=document.getElementById("songtwo");//获得songtwo的标签
	var songthree=document.getElementById("songthree");//获得songone的标签
	var onesongtxt=document.getElementById("onesongtxt").value;//获得文本内容
	var twosongtxt=document.getElementById("twosongtxt").value;
	var threesongtxt=document.getElementById("threesongtxt").value;
	//上一曲和下一曲事件
	var upindex=0;
	var underindex=0;
	var songnumup=document.getElementById("up");
	var songnumnext=document.getElementById("next");
	//按钮按住上一曲事件
songnumup.onclick=function(){
	upindex+=1;
		switch(upindex){
				case 1:
					songthree.onclick();
					break;
				case 2:
					songtwo.onclick();
					break;
				case 3:
					songone.onclick();
					break;
				default:
					upindex=1;
					songthree.onclick();
					break;
			}
	}
	//按钮按住下一曲事件
songnumnext.onclick=function(){
	underindex+=1;
		switch(underindex){
				case 1:
					songone.onclick();
					break;
				case 2:
					songtwo.onclick();
					break;
				case 3:
					songthree.onclick();
					break;
				default:
					underindex=1;
					songone.onclick();
					break;
			}
	}
 
//音乐列表点击事件
songone.onclick=function(){
		var name=document.getElementById("name");
		var singer=document.getElementById("singer");
		name.innerHTML="天造地设";
		singer.innerHTML="胖胖胖";
		oPage.style.top="0px";
		myMusic.src="music/胖胖胖-天造地设.mp3";//替换音乐
		text.innerHTML=onesongtxt;//替换文本
		oPlay.onclick();//调用播放按钮单击事件
		geci();
		//console.log(name);
		
	}
	
songtwo.onclick=function(){
		var name=document.getElementById("name");
		var singer=document.getElementById("singer");
		name.innerHTML="光辉岁月";
		singer.innerHTML="Beyond";
		oPage.style.top="0px";
		myMusic.src="music/Beyond-光辉岁月.mp3";//替换音乐
		text.innerHTML=twosongtxt;//替换文本
		oPlay.onclick();//调用播放按钮单击事件
		geci();
	}
songthree.onclick=function(){
		var name=document.getElementById("name");
		var singer=document.getElementById("singer");
		name.innerHTML="小幸运";
		singer.innerHTML="谭嘉仪";
		oPage.style.top="0px";
		myMusic.src="music/谭嘉仪-小幸运.mp3";//替换音乐
		text.innerHTML=threesongtxt;//替换文本
		oPlay.onclick();//调用播放按钮单击事件
		geci();
	}

 

//播放和暂停
oPlay.onclick=function(){
		if(onOff)
		{
			myMusic.play();
			onOff=false;
			oimg.className="im rotate";
			this.style.backgroundImage = "url('images/暂停.png')";
		
		}else
		{
			myMusic.pause();
			onOff=true;
			oimg.className="im";
			this.style.backgroundImage = "url('images/播放.png')";	
			
		}
}
	
/*按钮改变页面*/
	//点击移到上一级页面
up.onclick=function(){
		num1+=1;
		switch(num1){
				case 1:
					con.style="margin-left:-640px;";
					break;
				case 2:
					con.style="margin-left:-320px;";
					break;
				case 3:
					con.style="margin-left:0px;";
					break;
				default:
					num1=1;
					con.style="margin-left:-640px;";
					break;
			}
		
}
	//点击移到下一级页面
under.onclick=function(){
	upnum+=1;
		switch(upnum){
				case 1:
					con.style="margin-left:-320px;";
					break;
				case 2:
					con.style="margin-left:-640px;";
					break;
				case 3:
					con.style="margin-left:0px;";
					break;
				default:
					upnum=1;
					con.style="margin-left:-320px;";
					break;
			}
			
}

 

这部分代码有些是参考一个网络老师的;
主要功能是获取音乐播放时间和歌词同步,监听音乐是否完成,音乐时长。
var aP;
var tiao=0;//存放音乐的总时长
var oPage=document.getElementById("page3");
function geci(){
	//歌词同步
	//1.获取歌词并添加到歌词盒子中
	var html='';
	
	var end=document.getElementById("end");//获取音乐播放总时间
	var arr=text.value.split("[");//让歌词从“[”开始切开
	//console.log(arr);
	var musictime=0;
for(var i=0;i<arr.length;i++){
	var lrc=arr[i].split("]");//从“]”处切开
	var times=lrc[0].split(".");//从"."处切开
	//console.log(lrc[0]);
	var time=times[0].split(":");//从“:”处切开
	//console.log(time);
	var cut=time[0]*60+time[1]*1;//把分钟化成秒钟并和秒钟加起来用于作为p标签的id名
	tiao=cut;//存放音乐的总时长
	musictime=time[0]+":"+time[1];
	//musictime="0"+(myMusic.duration)/60+":"+(myMusic.duration)%60;
	//console.log(musictime);
	if(lrc[1]){
		html+="<p id="+cut+">"+lrc[1]+"</p>";//给每个<p>标签添加id
		
		}
	}
	oPage.innerHTML=html;
	//console.log(html);
	aP=oPage.getElementsByTagName("p");
	end.innerHTML=musictime;
}
	
	//console.log(end);
	//console.log(aP);
	var n=0;//用来存放多少行
	//2.实现歌词同步
	//2.1监听歌曲播放的进度
myMusic.addEventListener("timeupdate",function(){
	//console.log(this.currentTime);
	var strat=document.getElementById("str");//获取音乐播放时间
	var jdt=document.getElementById("jdt");
	var curt=parseInt(this.currentTime); //获取歌曲的播放时间并取整数赋给curt
	strat.innerHTML="0"+parseInt(curt/60)+":"+(curt%60);
	//console.log(strat.innerHTML);
	//console.log(this.currentTime);
	
	//console.log(jdt.style.marginLeft);
	if(document.getElementById(curt)){
		//把原先的歌词都变为原来的颜色和字号
		for(var i=0;i<aP.length;i++){
			aP[i].style.color="#ccc";
			aP[i].style.fontSize="12px";
			aP[i].style.fontWeight="none";
			}
			//再把当前的改为红色
			document.getElementById(curt).style.color="red";
			document.getElementById(curt).style.fontSize="16px";
			document.getElementById(curt).style.fontWeight="bold";
			if(aP[n+10] && aP[n+10].id==curt){
				oPage.style.top=-n*20+"px";
				n++;
				}
		}
		if(curt>=1){
		jdt.style.marginLeft=-293+curt*(270/tiao)+"px";
	}
	});
	/*监听歌曲是否播放完成*/
myMusic.addEventListener("ended",function(){
			var jdt=document.getElementById("jdt");
			jdt.style.marginLeft="-20px";
			oimg.className="im";
			onOff=true;
			oPage.style.top="0px";
			oPlay.style.backgroundImage = "url('images/播放.png')";
});

喜欢的点个赞,鼓励鼓励啊!哈哈。

 

下面是百度链接:

链接:https://pan.baidu.com/s/1nvKeXdf 密码:mzn7

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值