亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

運用js教你輕松制作html音樂播放器

2019-11-20 08:50:37
字體:
來源:轉載
供稿:網友

用HTML做了個音樂播放器,可以循環播放,選擇歌曲,以及自動播放下一首,運用了js和json知識,下面是效果圖和源碼,有興趣的可以試試哦

效果圖:

源碼:html

<span style="color:#999999;"><!DOCTYPE html> <html>   <head>  <meta charset="utf-8" />  <title>音樂播放器</title>  <script type="text/javascript" src="js/jquery-2.1.1.min.js" ></script>  <script src="js/music.js" type="text/javascript" charset="utf-8"></script>  <style>   * {   margin: 0 auto;   padding: 0;   }     .page {   position: absolute;   width: 100%;   height: 100%;   }     .header {   width: 100%;   height: 44px;   background: lightcoral;   position: relative;   }     .title {   font-size: 20px;   color: white;   float: left;   margin: 7px 10px;   }     .search {   float: right;   width: 30px;   margin: 7px 10px;   }     .earch {   float: right;   width: 30px;   margin: 7px 10px;   }   .musicBox{   width: 100%;   position: absolute;   top: 44px;   bottom: 50px;   background:url(音樂播放器資源/img/bg.jpg);   background-size:100% 100%;   /*內容超出范圍部分滾動*/   overflow: scroll;      }   /*定義一條音樂的列表,每行的樣式 在js中動態加載到音樂列表每一行的div上*/   .music{   width: 100%;   height: 60px;   border-bottom: 2px solid gray;   margin: 10px 20px;    position: relative;   }   .music img{   width: 40px;   height: 40px;   margin: 10px 20px;     }   .music p{   color: goldenrod;   position: absolute;   left: 85px;   top: 10px;      }   /*音樂播放時所對應的行的樣式*/   .musicPlay{   background: rgba(120,10,60,0.4);      }   .musicPlay p{   color: red;   }   /*設置footer 的樣式*/   .footer{   width: 100%;   height: 50px;   position: absolute;   bottom: 0px;   background: lightcoral;   }   .range{   width: 100%;   position: absolute;   top: -3px;   left: 0px;      }   .pic{   width: 30px;   height: 30px;   position: absolute;   left: 10px;   top: 12px;   border-radius: 15px;   animation: picAn 2s infinite linear;      }   @keyframes picAn{   from{}   to{transform: rotate(360deg);}   }   /*控制按鈕的樣式*/   .play{   width: 20px;   height: 20px;   position: absolute;   left: 45%;   top: 10px;   }   .pre{   width: 30px;   height: 30px;   position: absolute;   left: 0px;   top: 5px;        }   .next{   width: 30px;   height: 30px;   position: absolute;   right: 0px;   top: 5px;   }   .love{   position: absolute;   right: 5px;   top: 15px;   width: 20px;   height: 30px;      }   .musicControls{   position: absolute;   width: 50%;   left: 25%;   top: 10px;   }  </style>  </head>   <body>  <div class="page">   <audio id="audio"></audio>   <div class="header">   <h3 class="title">我的音樂</h3>   <img class="search" src="音樂播放器資源/img/search.png" />   <img class="earch" src="音樂播放器資源/img/earch.png" />   </div>   <!--顯示音樂類表-->   <div class="musicBox">   <!--內容要通過讀取json文件來獲得 音樂列表-->    </div>   <!--控制臺-->   <div class="footer">   <!--進度條-->   <input type="range" class=" range" />   <img src="音樂播放器資源/img/deng.jpg" class="pic" />   <!--控制按鈕-->   <div class="musicControls">    <img src="音樂播放器資源/img/pre.png" class="pre" />    <img src="音樂播放器資源/img/play.png" class="play" />    <img src="音樂播放器資源/img/next.png" class="next" />   </div>   <img src="音樂播放器資源/img/shoucang.png" class="love" />   </div>  </div>   </body>  </html></span>

 

下面是js代碼:

 $(document).ready(function(){  //音樂播放器需要,播放器對象player,音樂對象,用play去播放music對象 // 創建music對象,用于保存音樂的屬性  function Music(){    }  Music.prototype.src= "";  Music.prototype.img ="";  Music.prototype.num="";  Music.prototype.musicName="";  Music.prototype.name="";  //創建player對象  function Player(){    }  Player.prototype.audio = document.getElementById("audio"); // 目前播放第幾首歌  Player.prototype.playIndex=0;  Player.prototype.isplay = false; // 定義播放器的方法  Player.prototype.rangUpdate = function(){   //this.audio.ontimeupdate =function() 音樂播放器播放音樂時監聽   //把進度條和音樂的時間長度結合起來   //音樂每播放一秒進讀條就會前進一個單位 this.duration音樂的總長度   this.audio.ontimeupdate =function(){    //把進度條的總長度設為音樂的總長度   $(".range").attr("max",this.duration);      //設置進度條的值為播放的時間   $(".range").val(this.currentTime);   //當一首歌播放完再去播放下一首   if (this .currentTime == this.duration ) {   player.nextMusic();   }            }    };  Player.prototype.playMusic =function(){   //向播放器添加音樂路徑   $(this.audio).attr("src",musicModels[this .playIndex].src);   this .audio.play();   //換音樂圖片   $(".pic").attr("src",musicModels[this.playIndex].img);   //波讓其的狀態   this .isplay= true;    };  Player.prototype.nextMusic = function(){       //越界問題   if (this .playIndex >= musicModels.length - 1) {   this.playIndex = 0;      }else{   this.playIndex = this .playIndex + 1;   }   //改變音樂類表的對應項的樣式     this.playMusic();   $(".music").eq(this.playIndex).addClass("musicPlay")   .siblings()   .removeClass("musicPlay");    };  Player.prototype.preMusic =function(){   if (this .playIndex <= 0) {   this.playIndex = musicModels.length-1;      }else{   this.playIndex = this .playIndex - 1;   }   //改變音樂類表的對應項的樣式     this.playMusic();   $(".music").eq(this.playIndex).addClass("musicPlay")   .siblings()   .removeClass("musicPlay");  };  Player.prototype.playOrPause = function(){   if(this.isplay){   this.audio.pause();   $(".play").attr("src","音樂播放器資源/img/stop.png");   }else{   this.audio.play();   $(".play").attr("src","音樂播放器資源/img/play.png");   }   this.isplay = !this.isplay;  }; // js文件從此向下 // 創建音樂數組  var musicModels = [];  //創建音樂播放器對象  var player= new Player();  /*Ajax 目的是在js中實現異步操作   * JS是單線程 的,在單線程中模擬java oc 多線程 開辟異步任務,,瀏覽器的引擎去做一步操作,   * 實質上不是開辟一個子線程,而是創建一個異步任務   * 優點:   * 1.不需要用戶等待服務器相應   * 在異步派發xmlHTTPRequest 請求后,馬上把控制權收回就被返回瀏覽器空頁面   * 界面不會出現白板,等待后臺服務器得到請求后,再去執行完成方法,在方法中填寫界面數據的代碼   * 2.不需要加載整個頁面只需要更新局部數據,節省流量,減輕服務器壓力   *   * 為xmlHTTPRequest 設置一個回調函數,服務器數據到達時觸發函數,發送請求時可以帶少量的參數   * 實現按需去數據   *   $.ajax(),這是jQuery 對ajax的封裝的最基礎的函數,通過這個函數可以實現異步通訊功能   var configObj= { //  method:數據提交方式 get OR post   URL:請求的網址   async:是否異步,默認true   data:post請求的參數   dataType :服務器返回的類型,xml string json   success:請求成功后的回調方法   error :請求失敗后的方法     }   $.ajax(configObj);完成異步請求   二、$post()只能采取post請求   三、$get()   四、$getJSON( url ,完成回調);可以請求本地路徑的內容   *   *   * */  $.getJSON("pbl.json",function(data){ //  console.log(data);   for (var i=0;i<data.length;i++) {   var music = new Music();   music.src= "音樂播放器資源/" + data[i].src;   music.img= "音樂播放器資源/" + data[i].img;   music.musicName = data[i].musicName;   music.name = data[i].name;   music.num = data[i].num;   musicModels.push(music);      }   //播放音樂   isertData();   player.playMusic();   player.rangUpdate();   $(".music").eq(player.playIndex).addClass("musicPlay")   .siblings()   .removeClass("musicPlay");  });  function isertData(){   //先要遍歷數據源數組   /*   html5 中添加了一個data-*的方式 來自定義屬性   用data-前綴,添加到自定義屬性名上,   這樣的結構可以存儲少量的數據   * */   for (var i=0;i<musicModels.length;i++) { //  /創建一個DIV元素表示,音樂中的一行,給這個div添加music樣式 //和綁定自定義屬性index來記錄這個div是列表中的第幾行   var $musicDiv = $("<div class = 'music' data-index = "+ i +"></div>"); //  將這個div添加到musicBox 中   $(".musicBox").append($musicDiv); //  設計musicdiv中的子元素,子元素有兩個,一個是歌曲的圖片,歌曲的信息 //  創建一個img 顯示歌曲圖片   var $img = (   "<img src =" + musicModels[i].img+" />");   $musicDiv.append($img); //  創建一個音樂信息的p標簽   var $musicMsg = $("<p>"+musicModels[i].musicName+" 演唱者:"   +musicModels[i].name    +"</p>"   );   $musicDiv.append($musicMsg);      }   $(".music").click(   function(e){    //從被選中的div中讀取自定義 index屬性       player.playIndex = $(this ).data("index");    player.playMusic();    //被選中的div設置musicplay樣式,該div的兄弟元素要溢出musicplay樣式    //保證只有一個div有musicplay    $(this).addClass("musicPlay").siblings().removeClass("musicPlay");         }   );  }    $(".play").click(function(){   player.playOrPause();   });     $(".next").click(function(){   player.nextMusic();         });   $(".pre").click(function(){   player.preMusic();         });     })

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲二区中文字幕| 日韩av在线网| 亚洲最大的av网站| 久久久极品av| 欧美国产日韩中文字幕在线| 日韩欧美精品在线观看| 国产精品自产拍在线观看| 2019中文字幕全在线观看| 日韩视频在线免费观看| 在线观看91久久久久久| 亚洲成人精品视频| 亚洲人成电影网站色www| 日韩欧亚中文在线| 久久久久久69| 国产精品麻豆va在线播放| 一区二区亚洲精品国产| 日韩久久精品成人| 亚洲精品98久久久久久中文字幕| 777国产偷窥盗摄精品视频| 亚洲精品资源美女情侣酒店| 亚洲一区av在线播放| 日韩中文字幕不卡视频| 久久久国产一区| 亚洲自拍偷拍区| 91日韩在线播放| 亚洲国产精品字幕| 日本成人黄色片| 日韩欧美在线免费观看| 国产精品日韩一区| 国产精品一二三在线| 久久免费国产精品1| 亚洲精品美女在线观看播放| 日本高清不卡的在线| 日韩在线观看你懂的| 中文字幕欧美日韩精品| 亚洲成人久久久久| 国产成人亚洲精品| 亚洲综合小说区| 中文字幕日韩精品在线| 欧美电影免费观看高清完整| 亚洲国产成人av在线| 日韩久久午夜影院| 亚洲一区二区久久久久久| 成人444kkkk在线观看| 国产视频在线一区二区| 亚洲影院污污.| 成人黄色av免费在线观看| 欧美高清第一页| 日韩高清中文字幕| 欧美日韩免费网站| 91精品国产综合久久久久久久久| 97超碰国产精品女人人人爽| 中文字幕av一区二区三区谷原希美| 一区二区福利视频| 性日韩欧美在线视频| 美女扒开尿口让男人操亚洲视频网站| 亚洲视频免费一区| 91高清免费在线观看| 91国语精品自产拍在线观看性色| 热re91久久精品国99热蜜臀| 久久久噜久噜久久综合| 日韩在线观看电影| 色综合久久天天综线观看| 成人黄在线观看| 亚洲精品日韩久久久| 久久精品国产久精国产思思| 91久久国产婷婷一区二区| 亚洲a中文字幕| 丝袜亚洲欧美日韩综合| 精品国产鲁一鲁一区二区张丽| 欧美日韩成人在线视频| 中文字幕亚洲情99在线| 黑人巨大精品欧美一区二区三区| 久久久久成人网| 91久久夜色精品国产网站| 国产成人在线播放| 中文字幕av日韩| 国产精品老女人精品视频| 热re91久久精品国99热蜜臀| 日韩精品在线观看网站| 欧美香蕉大胸在线视频观看| 亚洲а∨天堂久久精品喷水| 久久久免费电影| 国产在线播放91| 国产成人精品国内自产拍免费看| 91精品国产免费久久久久久| 日韩欧美高清视频| 蜜臀久久99精品久久久无需会员| 亚洲一品av免费观看| 成人福利视频在线观看| 91老司机在线| 国内精品久久久久久影视8| 国产一区私人高清影院| 成人福利免费观看| 日韩在线视频播放| 国产精品免费网站| 久久久精品999| 亚洲精品第一国产综合精品| 国产精品网站视频| 欧美乱大交做爰xxxⅹ性3| 亚洲一区二区在线播放| 欧美日韩国产中字| 国产91精品最新在线播放| 亚洲va欧美va国产综合剧情| 国产亚洲欧美日韩美女| 成人激情视频在线播放| 国产成人精品免高潮在线观看| 成人女保姆的销魂服务| 亚洲国产婷婷香蕉久久久久久| 久久久久久av| 欧美成在线观看| 日本成人在线视频网址| 亚洲人成网站免费播放| 免费成人高清视频| 岛国av一区二区三区| 亚洲国产精彩中文乱码av在线播放| 96国产粉嫩美女| 777国产偷窥盗摄精品视频| 亚洲视频在线播放| 国产精品永久免费视频| 91精品国产色综合久久不卡98口| 久久久久久久一区二区三区| 日韩高清电影好看的电视剧电影| 亚洲精品成人久久电影| 久久午夜a级毛片| 日韩精品极品视频| 成人黄色在线观看| 国产一区二区在线播放| 欧洲成人在线视频| 国产啪精品视频网站| 国产午夜精品一区二区三区| 亚洲国产第一页| 中文字幕日韩有码| 久久国产精品网站| 久久久亚洲影院| 91久久精品视频| 2019中文字幕在线观看| 国产伦精品一区二区三区精品视频| 色yeye香蕉凹凸一区二区av| 日韩久久免费电影| 亚洲免费电影一区| 97在线精品视频| 欧美老女人性视频| 51色欧美片视频在线观看| 亚洲国产精品女人久久久| 国产精品一区二区3区| 97国产精品久久| 亚洲乱亚洲乱妇无码| 亚洲电影免费观看高清完整版在线观看| www.亚洲男人天堂| 久久久久久久久久亚洲| 国产精品视频久久久久| 亚洲第五色综合网| 久久久久国产精品免费| 欧美国产日韩一区二区在线观看| 精品成人国产在线观看男人呻吟| 69久久夜色精品国产7777| 久久国产精品影片| 青青久久av北条麻妃黑人| 国产精品极品尤物在线观看| 97香蕉超级碰碰久久免费的优势| 日本高清视频精品| 久久久久中文字幕2018| 97视频在线观看视频免费视频|