HTML+CSS+JavaScript做的音乐播放器,就当是入门的小东西吧~

疯了,因为 有.mp3文件搞得项目太大,没法打包上传,懒的去删了,直接上代码~ 

music.html

<!DOCTYPE HTML>
<html>

<head> 
<link rel="stylesheet" type="text/css" href="css/style.css" />
<style type="text/css">
<!--
#Layer1 {
	position:absolute;
	width:168px;
	height:85px;
	z-index:10;
	left: 97px;
	top: 68px;
	color:#000066;

	-webkit-transform:rotate(30deg); 
	text-shadow: 5px 5px 5px #0066FF;
	
}


-->
</style>
</head>

<body>
<div id="Layer1">这是音乐盒</div>
<div class="main">

 <div class="musicHead">
 
   <div class="musicLeft">
     <div class="prev"><input type="button" onClick="prev()" value="上一曲"/> </div>
     <div id="MainControl", class="MainControl"></div>
     <div class="next"> <input type="button" onClick="next()" value="下一曲"/> </div>
   </div>
 

  <div class="musicCenter">
   <marquee style="width:500px;"><div id="singer">1 歌名《简短铃声》--测试</div></marquee>
   <div class="ProcessControl"><!--进度条-->
     <div class="Process"></div> <!-- 全部时长-->
     <div class="ProcessYet"></div> <!--已经播放时长-->
   </div>
  </div>
 
 <div class="musicPlayModel"> <div id="timeshow"></div>   
 <div id="modelshow"><a href="javascript: getModel(3);"> <img src="photo/列表循环.png"/></a>
   
 </div>        
 <div class="sound">
 <div class="soundImageOpen"></div> 
 <div class="VoidProcess"></div>
 <div class="VoidProcessYet"></div>
 
 </div>
 
 
 </div>
 
  </div>
  
<div class="redLine"></div>
<div class="musicBottom">
<div class="title">歌曲名                                艺人名                                 时长</div>

</div>




</div>

 <audio id="video1" autoplay="true">
 <source id="mp4_src" src="music/123.mp3" type="audio/mp4">
  Your browser does not support the audio element.
</audio>
<script type="text/javascript" src="js/js.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script> 
</body>

</html>

style.css


/* CSS Document */



 
	
	
	.main
	
	{
	
	  margin-left:200px;
	  margin-top:100px;
	 
	  border-width: 2px;
  
      border-style: solid;
 
      border-color:#FF0066;  
  
      width:1280px;
  
      height:700px;
  
      padding:2px 5px;
  
      position:absolute;
  
      z-index:9;
	  background-color:#663366;
	  
	  box-shadow: 30px 30px 5px #888888; 
	  
	 
	
	} 
	
	.musicHead
	{
	   width:1280px;
	  padding:13px 9px;
	  height:60px;
	  
	  
	
    }
	.musicLeft
	{
	  float:left;
	  padding:3px 5px;
	  width:170px;
	  margin-top:12px;
	
	}
	
	.musicCenter
	{    float:left;
	     width:724px;
		 padding:3px 5px;
		 height:20px;
	}
	
	.musicBottom
	{
	margin-top:6px;
	
	
	}
	
	
	.title
	{
	padding:5px;
	margin-left:20px;
	
	
	}
	
	.songArray
	{
	position:absolute;
	color:#FF0066;
	padding:5px;
	left: 230px;
	top: 250px;
	z-index:10;
	text-shadow: 5px 5px 5px #FF0000;
	
	}
	
	
	.songArrayLeft
	{
	 
	  width:300px;
	  float:left;
	  text-shadow: 5px 5px 5px #FF0000;
	
	}
	.songArrayCenter
	{
	  width:300px;
	    float:left;
		text-shadow: 5px 5px 5px #FF0000;
	
	}
	.songArrayRight
	{
	  width:300px;
	    float:left;
		text-shadow: 5px 5px 5px #FF0000;
	
	}
	
	
	
	.musicPlayModel
	{
	   margin-top:22px;
	   float:left;
	   width:330px;
	   height:40px;
	}
	
	#timeshow
	{
	margin-left:8px;
	float:left;
	width:100px;
	color:#FFFFFF;
	
	}
	.modelshow
	{
	margin-left:8px;
	float:left;
	width:30px;
	height:40px;
	
	}
	
	.sound
	{
	position:absolute;
	width:200px;
	height:20px;
	z-index:10;
	left: 1082px;
	top: 35px;
	margin-left:5px;
	
	}
	
	.soundImageOpen
	{
	width:25px;
	height:25px;
	float:left;
	background:url(../photo/音量开.png) no-repeat;
	
	
	
	}
	.soundImageClose
	{
	width:25px;
	height:25px;
	float:left;
	background:url(../photo/音量关.png) no-repeat;
	
	}

 
	.VoidProcess
	{
	
	  width: 66px;

      height: 8px;
 
      cursor: pointer;
 
      background-color: #000000;     
      
	  
	  
      float:left;
	  margin-top:6px;
	  margin-left:5px;
	
	   border:2px solid;
      border-radius:25px;
	  
	
	
	}
	
	.VoidProcessYet
	
	{
	width: 0px;
	height: 8px;
	position:absolute;
	cursor: pointer;
	background-color: #FF0000;
	float:left;
	margin-top:6px;
	margin-left:10px;
	left: 19px;
	top: 0px;
	
	 border:2px solid;
      border-radius:25px;
	  
	
	
	}
	
	
	
	
	
	
	
	
	
	
	
	
	.ProcessControl
 
    {
 
       width:720px;
 
       padding: 5px 10px 10px 10px;
 
       float:left; 
 
       height:20px; 
 
       color:#ffffff;
	   
	  
 
    }
	
	 .Process
 
   {

      width: 720px;
	  float: left;
      height: 8px;
      cursor: pointer;
      background-color:#000000;
	  
	  border:2px solid;
      border-radius:25px;
	  
 
      
 
    }

   
 
   .ProcessYet

    {
 
      width: 0px;
 
      position:absolute;
 
      height: 8px;
 
      cursor: pointer;
 
      background-color: #FF0000;
	  
	   z-index:4; 
	   border:2px solid;   
       border-radius:25px;
	   
	  
 
    }
	
	.prev
	{
	height:30px;
	width:40px;
	float:left;
	
	}
	
	#singer
	{
	color:#FFFFFF;
	
	
	}
	
	.MainControl
	{
	
       width:30px;
       height:30px;
	   margin-left:20px;
       margin-right:5px;
 
        float:left; 
	    background:url(../photo/暂停.jpg) no-repeat;
	    background-size:30px;   
	
	}
	.stop
	{
	
	 width:30px;
       height:30px;
	   margin-left:20px;
       margin-right:5px;
 
        float:left; 
	   
		 background:url(../photo/开始.jpg) no-repeat;
	    background-size:30px;   
	
	}
	
	
	
	.next
	{
	height:30px;
	width:40px;
	float:left;
	
	}
	
	
	.redLine
	 {
	 height:3px;
	 background:#FF0066;
	
     }
	 
	 .songList
	 {
	 width:1024px;
	 
	 
	  }
	   开始与结束的切换
	 
	  #begin
	  {
	  width:5px;
	  height:5px;
	  background: #FF0000;
	  
	  }
	  
	  .end
	  {
	   width:5px;
	  height:5px;
	  background:  #0000FF;
	   
	  }
	  
	  a{text-decoration:none;
	  color:#FF0066;}
a:hover{text-decoration:none;
color:#6600FF;
}
	  
最后是js.js 

alert(1);
var player=document.getElementById("video1");
var mysongs=new Array("./music/简短铃声.mp3","./music/矜持.mp3","./music/很受伤.mp3","./music/爱你的最后一天.mp3","./music/三个人的时光.mp3","./music/有关爱情.mp3","./music/foryou.mp3","./music/123.mp3");
var singerName=new Array("1 简短铃声 "," 2 矜持"," 3 很受伤 "," 4 爱你的最后一天","5 三个人的时光","6 有关爱情","7 for you","8 123");
var nowSong=new Array("1 歌名《简短铃声》--测试","2 歌名《矜持》--王菲","3 歌名《很受伤》--任贤齐","4 歌名《爱你的最后一天》--任贤齐","5 歌名《三个人的时光》--三藏","6 歌名《有关爱情》--DJ","7 歌名《for you》--Byane","8 歌名《123》--神人")
var singer=new Array("测试","王菲","任贤齐","任贤齐","三藏","DJ","Byane","神人");
var time=new Array("00:04","04:38","04:31","03:52","01:30","04:04","06:33","00:09");
var songIndex=0;
document.write("<br>");
player.addEventListener('ended',onPlayEnd);

player.οnlοadstart=Play(); //音乐load的时候就开始调用的函数

//player.οnlοadstart=totaltime();


//未封装,歌曲列表
document.write('<div class="songArray">');



//暂时认为时间是静态存入数组的,估计也是,因为动态要等音频加载完了才能一个一个现实!

for(var i=0;i<singerName.length;i++)
{
       
     document.write('<div class="songArrayLeft">'+"<a href='javascript: getSongName(" + i + ");'>"+singerName[i]+"</a>"+'</div>');
	 
	 document.write('<div class="songArrayCenter">'+singer[i]+'</div>');
	
	 document.write('<div class="songArrayRight">'+time[i]+'</div>');
	 
	 document.write("</br>");
	 
}

document.write('</div>');



//



function getSongName(num)
{

     document.getElementById("mp4_src").src=mysongs[num];
     document.getElementById("singer").innerHTML=nowSong[num];
      Load();
     
}





$(".Process").click(function (e) {

  
    
     

        var Process = $(".Process").offset();
        
          
 
        var ProcessStart = Process.left;


        var ProcessLength = $(".Process").width();<!-- 720-->
 
       
        
        var CurrentProces = e.clientX - ProcessStart;
   
        
       PointToWhere(CurrentProces / ProcessLength);
        
         $(".ProcessYet").css("width", CurrentProces);
 
     });

//点击已经播放过的进度条(向前点击)

 $(".ProcessYet").click(function (e) {
 
  
 
         //播放进度条的基准参数
 
         var Process = $(".Process").offset();
 
         var ProcessStart = Process.left;
 
         var ProcessLength = $(".Process").width();
 
         var CurrentProces = e.clientX - ProcessStart;
 
         PointToWhere(CurrentProces / ProcessLength);
 
         $(".ProcessYet").css("width", CurrentProces);
 
     });
 
 

 function PointToWhere(PointInTotal) {
 
    
     player.currentTime = PointInTotal * player.duration;
 
     Play();
 
 }
 
 
 $(".VoidProcess").click(function (e) {
 
         //音量进度条的基准参数
 
         var VoidProcess = $(".VoidProcess").offset();
 
         var VoidProcessStart = VoidProcess.left;
 
         var VoidProcessLength = $(".VoidProcess").width();
 
  
 
         var CurrentProces = e.clientX - VoidProcessStart;
 
         VolumeProcessRange(CurrentProces / VoidProcessLength);
 
         $(".VoidProcessYet").css("width", CurrentProces);
 
     });
 
 
 
     //音量进度条时间(进度减少)
 
     $(".VoidProcessYet").click(function (e) {
 
         //音量进度条的基准参数
 
         var VoidProcess = $(".VoidProcess").offset();
 
         var VoidProcessStart = VoidProcess.left;
 
         var VoidProcessLength = $(".VoidProcess").width(); 
   
         var CurrentProces = e.clientX - VoidProcessStart;
 
         VolumeProcessRange(CurrentProces / VoidProcessLength);
 
         $(".VoidProcessYet").css("width", CurrentProces);
 
     }); 
 
 
 
 function VolumeProcessRange(rangeVal) {
 
     
 
     player.volume = parseFloat(rangeVal);
 
 }
 
 
 
 






 
function TimePass() 

{  
   var ProcessYet = 0;

    setInterval(function () {
 
         var ProcessYet = (player.currentTime / player.duration) * 720;

         $(".ProcessYet").css("width", ProcessYet);
 
        var currentTime = timeDispose(player.currentTime);
 
      var  timeAll = timeDispose(player.duration);
         
		 document.getElementById("timeshow").innerHTML=currentTime+"|"+timeAll;//时间显示
		 
		
        
     }, 1000);  <!--每秒调用一次-->
 


     
}
//同样的代码,就是显示时间的那个,放在函数外面就不好使,而且放在一般的函数中也不好使,目测是因为音乐加载的问题,只有音乐全部加载出来才能出现时间。
//函数内的赋值不能在函数外直接调用,(这个不肯定),而且尤为不应该在音乐尚未加载的时候就调用!




	


function TotalTime()
{
   alert(timeDispose(player.duration));
}

function currentTime()

{
    alert(timeDispose(player.currentTime));

}

function timeDispose(number) 

{

     var minute = parseInt(number / 60);
 
     var second = parseInt(number % 60);
  
     minute = minute >= 10 ? minute : "0" + minute;
 
     second = second >= 10 ? second : "0" + second;

     return minute + ":" + second;

}





function onPlayEnd()
{

if(modelnum==3&&songIndex==mysongs.length-1)
  { 
   
     songIndex=-1;
     document.getElementById("mp4_src").src=mysongs[songIndex];
     document.getElementById("singer").innerHTML=singerName[songIndex];
      Load();
   }
if(modelnum==4)
{
     songIndex= parseInt(mysongs.length * Math.random());
     document.getElementById("mp4_src").src=mysongs[songIndex];
     document.getElementById("singer").innerHTML=singerName[songIndex];
      Load();
   
}

if(modelnum==0||modelnum==3&&songIndex!=mysongs.length-1)
{ 
 next();
}

  if(modelnum==1)
  { 
     
     Load();
     
  }

 


}




 


//点击下一曲或者上一曲要判断一下 开始和停止按钮的css状态! 应该放在next和prev中,不过放入进去后发现,每次点下一曲之后都需要点两次暂定才能暂停,试过多次修改,问题无法解决,暂未应用!
function IshasCss()
{
 if($("#MainControl").hasClass("MainControl")){} //#MainControl是id ~
 else { $("#MainControl").removeClass("stop").addClass("MainControl");	}
 
}

function next()
  { 
 
   
      $(".ProcessYet").css("width", 0);
	  
	 
   
   
    if(modelnum==1)
  {
       Load();
   }
  if(modelnum==2||modelnum==0)
   {
      if(songIndex<mysongs.length-1)
   {
   songIndex=this.songIndex+1; 
   document.getElementById("mp4_src").src=mysongs[songIndex];
   document.getElementById("singer").innerHTML=nowSong[songIndex];
   Load();
   }
   else {alert("已经播放到最后一首");player.pause();}
   
   

    }

   if(modelnum==3)
  {
        if(songIndex<mysongs.length-1)
      {
       songIndex=this.songIndex+1; 
       }
     else {songIndex=0;}
     document.getElementById("mp4_src").src=mysongs[songIndex];
     document.getElementById("singer").innerHTML=nowSong[songIndex];
      Load();
  }

    if(modelnum==4)
 {
    songIndex= parseInt(mysongs.length * Math.random());
     document.getElementById("mp4_src").src=mysongs[songIndex];
     document.getElementById("singer").innerHTML=nowSong[songIndex];
     Load();
 }

   

    }
	
	
	
	
	
	
	
	
	

function prev()
{
	
	
  $(".ProcessYet").css("width", 0);

  if(modelnum==1)
  {
       Load();
   }

 if(modelnum==2||modelnum==0)
  {
   if(songIndex>0)
  {
   songIndex=this.songIndex-1;
   document.getElementById("mp4_src").src=mysongs[songIndex];
   document.getElementById("singer").innerHTML=nowSong[songIndex];
    Load(); }

   else{alert("已经播放到最开始的一首");player.pause();}
   

   }

 if(modelnum==3)
  {
      if(songIndex>0)
      {
       songIndex=this.songIndex-1; 
       }
      else {songIndex=mysongs.length-1;}
      document.getElementById("mp4_src").src=mysongs[songIndex];
      document.getElementById("singer").innerHTML=nowSong[songIndex];
      Load();
  }	
 if(modelnum==4)
 {
    songIndex= parseInt(mysongs.length * Math.random());
     document.getElementById("mp4_src").src=mysongs[songIndex];
     document.getElementById("singer").innerHTML=nowSong[songIndex];
     Load();
 }

}
var modelnum=0;


function getModel(model)
{



 modelnum=model;

 

}




  
 var beginorstop=document.getElementById("begin");
 var end=document.getElementById("end");
 var changemodel=document.getElementById("modelshow");
 //切换
  $(document).ready(function () {
			//切换开始暂停标签				  
    $("#MainControl").toggle(
		  function () {
  
            $(this).removeClass("MainControl").addClass("stop");
  
            player.pause();},
  
          function () {
			  
			
    
            $(this).removeClass("stop").addClass("MainControl");
			  
  
            player.play();
  
            TimePass(); 
  
                           });
	
	//模式的切换
	$("#modelshow").toggle(
			function () {
  
          changemodel.innerHTML="<img src="+"\""+"photo/单曲循环.png"+"\""+">";
		   getModel(1);
		   
  
                          },
  
            
	       function ()  {
  
          changemodel.innerHTML="<img src="+"\""+"photo/随机播放.png"+"\""+">";
		  getModel(4);
       
  
                         },
		  function ()  {
  
           changemodel.innerHTML="<img src="+"\""+"photo/列表循环.png"+"\""+">";
           getModel(3);
          
                         });
	
	
	//音量的切换
	$(".soundImageOpen").toggle(
		  function () {
  
            $(this).removeClass("soundImageOpen").addClass("soundImageClose");
  
              player.volume = 0;},
  
          function () {
			  
			
    
            $(this).removeClass("soundImageClose").addClass("soundImageOpen");
			  
  
           player.volume = 1; 
  
                           });
	
	
	
					          }) ;
  
  
  
    
  
	
		
		
  
  

function Play()
{
     player.play();
  
     TimePass(); 
}


function stop()
{
  player.pause();
}


function Load()
{
    player.load();

     TimePass();
}

//function quickRate()
//{
//  player.playbackRate=2;
//}

//function normalRate()
//{
//    player.playbackRate=1;
//}

//function lowerRate()
//{
//    player.playbackRate=0.5;
//}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值