最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js+audio實(shí)現(xiàn)音樂播放器

 更新時(shí)間:2020年09月13日 10:33:36   作者:暗鎖讀客  
這篇文章主要為大家詳細(xì)介紹了js+audio實(shí)現(xiàn)音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了js+audio實(shí)現(xiàn)音樂播放器的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html>
<html>

 <head>
 <meta charset="UTF-8">
 <title>音樂播放器</title>
 <link rel="shortcut icon" type="image/x-icon" href="img/an.ico" />
 <link rel="stylesheet" type="text/css" href="css/music_Play.css" />
 </head>

 <body>
 <div class="music_bg">
 <div class="music_cont">
 <audio id="audio1" src=""></audio>
 <div class="music_ctrl">
  <div class="music_btn">
  <div class="btn prev">
  <img id="prev" src="img/prev.png" />
  </div>
  <div class="btn play">
  <img id="play" src="img/pause.png" />
  </div>
  <div class="btn next">
  <img id="next" src="img/next.png" />
  </div>
  </div>
  <div class="music_name" id="music_name"></div>
 </div>
 <div class="music_line">
  <div class="line1" id="line1"></div>
  <div class="line2" id="line2"></div>
 </div>
 </div>
 </div>
 </body>
 <script src="js/audio_play.js" type="text/javascript" charset="utf-8"></script>
</html>
* {
 margin: 0;
 padding: 0;
 -moz-user-select: none;
 -webkit-user-select: none;
 -ms-user-select: none;
}


body {
 overflow-x: hidden;
}

.music_bg {
 width: 100%;
 height: 666px;
 position: absolute;
 background-image: url(../img/bj.jpg);
 background-position: center;
 background-size: cover;
 background-repeat: no-repeat;
}

.music_cont {
 width: 300px;
 height: 300px;
 position: absolute;
 top: 50%;
 left: 50%;
 margin: -150px 0 0 -150px;
 background-color: #000;
 border-radius: 10px;
 box-shadow: #000000 5px 5px 30px 5px
}

.music_line {
 width: 300px;
 height: 20px;
 overflow: hidden;
 position: absolute;
 top: 30%;
}

.line1 {
 width: 0%;
 height: 60%;
 float: left;
 margin-top: 1%;
 margin-right: -2px;
 background-color: rgba(255, 255, 255, 0.9);
}

.line2 {
 background-image: url(../img/point.png);
 height: 100%;
 background-repeat: no-repeat;
 width: 10px;
 background-position: center;
 float: left;
 cursor: pointer;
 margin-left: -4px;
 margin-right: -4px;
}

.music_ctrl {
 width: 300px;
 height: 200px;
 position: absolute;
 bottom: 0;
 background-color: #8c3232;
}

.music_btn {
 width: 300px;
 height: 100px;
 position: relative;
}

.btn {
 width: 33.33%;
 float: left;
 height: 40px;
 margin-top: 50px;
}

.prev img {
 float: right;
 margin: 10px 0px;
 cursor: pointer;
}

.play img {
 margin: 2px 35px;
 cursor: pointer;
}

.next img {
 float: left;
 margin: 10px 0px;
 cursor: pointer;
}

.music_name {
 width: 300px;
 height: 100px;
 position: relative;
 text-align: center;
 line-height: 100px;
 color: #fff;
 font-size: 18px;
}
// 定義索引和定時(shí)器
var index = 0,
 timer = null;
// 獲取到要操作的對象
var prev = document.getElementById("prev");
var play = document.getElementById("play");
var next = document.getElementById("next");
var audio1 = document.getElementById("audio1");
var music_name = document.getElementById("music_name");
var line1 = document.getElementById("line1");
var line2 = document.getElementById("line2");
// 定義數(shù)組存音頻相關(guān)資料
var music_src = ["1.mp3", "2.mp3", "3.mp3", "4.mp3"];
var music_title = ["白舉綱-紳士(live)", "魔鬼中的天使", "下個(gè)路口見", "大魚"];
// 進(jìn)行初始化音頻
audio1.src = "audio/" + music_src[index];
music_name.innerText = music_title[index];
// 按鈕是點(diǎn)擊事件
play.onclick = function() {
 move1(); // 播放或暫停
};
prev.onclick = function() {
 prev1(); // 上一曲,播放
 move1();
}
next.onclick = function() {
 next1(); // 下一曲,播放
 move1();
 }

 // 下一曲的函數(shù)
var next1 = function() { // 索引+1,初始化改變后的音樂播放界面
 if (index == music_src.length - 1) {
  index = 0;
 } else {
  index++;
 }
 audio1.src = "audio/" + music_src[index];
 music_name.innerText = music_title[index];
 }
 // 上一曲的函數(shù)
var prev1 = function() { // 索引-1,初始化改變后的音樂播放界面
 if (index == 0) {
  index = music_src.length - 1;
 } else {
  index--;
 }
 audio1.src = "audio/" + music_src[index];
 music_name.innerText = music_title[index];
 }
 // 暫停與播放的函數(shù)
var move1 = function() {
 // 判斷現(xiàn)在是不是在播放
 if (audio1.paused) { // 沒有,播放音樂,改變按鈕樣式,改變進(jìn)度條
  audio1.play();
  play.src = "img/play.png";
  timer = setInterval(function() { // 每500毫秒執(zhí)行一次
  var drtTime = audio1.duration; // 得到音頻總時(shí)間(如果不放在定時(shí)器中會(huì)出現(xiàn)下一曲,暫停播放,進(jìn)度條來回跳動(dòng))
  var curTime = audio1.currentTime; // 獲取音頻當(dāng)前播放時(shí)間
  line1.style.width = (curTime / drtTime) * 100 + "%"; // 計(jì)算出進(jìn)度條的長度
  if (drtTime==curTime) {
   next.onclick();
  }
  console.log(drtTime,curTime);
  }, 500);
 } else { // 播放,關(guān)閉音樂,關(guān)閉按鈕圖標(biāo)
  audio1.pause();
  play.src = "img/pause.png";
  clearInterval(timer);
 }
 }
 // 拖動(dòng)進(jìn)度條改變播放進(jìn)度
var flag = false; // 標(biāo)記
var mx = null; // 距離
line2.onmousedown = function(event) {
 // 改變狀態(tài)
 flag = true;
 // 按下鼠標(biāo)獲取距離
 mx = event.pageX - line2.offsetLeft;
 clearInterval(timer);
}
document.body.onmousemove = function(event) {
 // 當(dāng)狀態(tài)為true時(shí)可以獲取
 if (flag) {
  // 滑塊的位置=當(dāng)前鼠標(biāo)位置-距離
  var x1 = event.pageX - mx;
  // 進(jìn)度條當(dāng)前長度=滑塊位置-進(jìn)度條的開始坐標(biāo)值
  var x2 = x1 - line1.offsetLeft;
  // 用進(jìn)度條當(dāng)前長度/進(jìn)度條總長度得到一個(gè)小數(shù)
  var x3 = x2 / 295;
  // 取到小數(shù)點(diǎn)后3位
  var x4 = x3.toFixed(3);
  if (x4 >= 0 && x4 < 1) {
  // 當(dāng)百分比在0--1之間時(shí)才改變進(jìn)度條長度
  line1.style.width = x4 * 100 + "%";
  }else if (x4 == 1) {
  next.onclick();
  }
 }
 }
 // 放開鼠標(biāo)時(shí),狀態(tài)改變,當(dāng)前播放時(shí)間改變,啟動(dòng)定時(shí)器繼續(xù)工作
document.body.onmouseup = function(event) {
 flag = false; // 狀態(tài)改變
 var x5 = parseInt(line1.style.width) / 100; // 得到當(dāng)前進(jìn)度條的百分比
 var drtTime = audio1.duration; // 得到音頻總時(shí)間
 audio1.currentTime = (drtTime * x5).toFixed(0); // 改變當(dāng)前播放時(shí)間
 timer = setInterval(function() { // 定時(shí)器重啟成功
 var curTime = audio1.currentTime;
 line1.style.width = (curTime / drtTime) * 100 + "%";
 }, 500);
}

相關(guān)圖片





以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序局部刷新觸發(fā)整頁刷新效果的實(shí)現(xiàn)代碼

    微信小程序局部刷新觸發(fā)整頁刷新效果的實(shí)現(xiàn)代碼

    這篇文章主要介紹了微信小程序局部刷新觸發(fā)整頁刷新效果的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 原生JS實(shí)現(xiàn)平滑回到頂部組件

    原生JS實(shí)現(xiàn)平滑回到頂部組件

    返回頂部組件是一種極其常見的網(wǎng)頁功能,需求簡單:頁面滾動(dòng)一定距離后,顯示返回頂部的按鈕,點(diǎn)擊該按鈕可以將滾動(dòng)條滾回至頁面開始的位置,接下來通過本文給大家介紹原生JS實(shí)現(xiàn)平滑回到頂部組件,需要的朋友參考下吧
    2016-03-03
  • ES6中async函數(shù)與await表達(dá)式的基本用法舉例

    ES6中async函數(shù)與await表達(dá)式的基本用法舉例

    async和await是我們進(jìn)行Promise時(shí)的一個(gè)語法糖,async/await為了讓我們書寫代碼時(shí)更加流暢,增強(qiáng)了代碼的可讀性,下面這篇文章主要給大家介紹了關(guān)于ES6中async函數(shù)與await表達(dá)式的基本用法,需要的朋友可以參考下
    2022-07-07
  • javascript實(shí)現(xiàn)點(diǎn)擊產(chǎn)生隨機(jī)圖形

    javascript實(shí)現(xiàn)點(diǎn)擊產(chǎn)生隨機(jī)圖形

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)點(diǎn)擊產(chǎn)生隨機(jī)圖形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 關(guān)于Promise 異步編程的實(shí)例講解

    關(guān)于Promise 異步編程的實(shí)例講解

    下面小編就為大家?guī)硪黄P(guān)于Promise 異步編程的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • JS/HTML5游戲常用算法之追蹤算法實(shí)例詳解

    JS/HTML5游戲常用算法之追蹤算法實(shí)例詳解

    這篇文章主要介紹了JS/HTML5游戲常用算法之追蹤算法,結(jié)合吃豆人游戲的算法原理以實(shí)例形式詳細(xì)分析了追蹤算法的相關(guān)算法操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • 原生Javascript封裝的一個(gè)AJAX函數(shù)分享

    原生Javascript封裝的一個(gè)AJAX函數(shù)分享

    這篇文章主要介紹了原生Javascript封裝的一個(gè)AJAX函數(shù)分享,本文是實(shí)際項(xiàng)目中提取出來的,簡單易用,需要的朋友可以參考下
    2014-10-10
  • 自定義滾動(dòng)條3.0

    自定義滾動(dòng)條3.0

    圖片自定義滾動(dòng)條3.0(Duma“自動(dòng)渲染版”,也許世間萬物都會(huì)變,但是真摯的愛,卻永遠(yuǎn)留存在心中!)
    2009-07-07
  • js chrome瀏覽器判斷代碼

    js chrome瀏覽器判斷代碼

    今天發(fā)現(xiàn)chrome還是有一些獨(dú)一無二的東西,基于它們,我們就可以搞出基于特征的判定了。
    2010-03-03
  • JavaScript字符串轉(zhuǎn)數(shù)字的多種方法總結(jié)

    JavaScript字符串轉(zhuǎn)數(shù)字的多種方法總結(jié)

    在 JavaScript 開發(fā)中,我們經(jīng)常需要將字符串轉(zhuǎn)換為數(shù)字,例如從輸入框獲取用戶輸入后進(jìn)行數(shù)學(xué)計(jì)算,JavaScript 提供了多種方法來實(shí)現(xiàn)這一功能,如 parseInt、parseFloat、Number 等,本文將詳細(xì)介紹這些方法的使用方式、適用場景以及可能的坑,需要的朋友可以參考下
    2025-03-03

最新評論

阳东县| 三河市| 海门市| 桓台县| 开江县| 许昌县| 得荣县| 茂名市| 红河县| 普定县| 卢湾区| 宁安市| 荔浦县| 岳阳市| 项城市| 江口县| 项城市| 扶风县| 大港区| 湘乡市| 宁安市| 宜宾县| 蒙城县| 凤翔县| 垣曲县| 丰顺县| 商城县| 花莲市| 拉萨市| 孟津县| 南和县| 长治县| 卫辉市| 思茅市| 南皮县| 德安县| 文昌市| 新和县| 桂东县| 西昌市| 浮梁县|