欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于JavaScript實現(xiàn)簡單的音頻播放功能

 更新時間:2018年01月07日 09:12:14   作者:OnePiece丶嘿喂Go  
本文給大家?guī)砹嘶趈s實現(xiàn)簡單的音頻播放功能,數(shù)據(jù)是由后臺提供的,具體實例代碼大家參考下本文

現(xiàn)效果如下:

由于我這邊不需要其他按鈕,就沒寫

數(shù)據(jù)是由后臺提供,在這做了個小列子

后臺代碼

public ActionResult MusicPlayer(int musicId=0) {
   MusicPlayerModel model = new MusicPlayerModel();
   switch (musicId)
   {
    default:
     model.MusicName = "Believe-動畫《海賊王》";
     model.CoverImg = "/Content/Music/Believe-cover.jpg";
     model.FileUrl = "/Content/Music/Believe.mp3";
     model.MusicStartSecond = 0;
     model.MusicEndSecond = 227;
     break;
    case 1:
     model.MusicName = "夢回還-動畫《狐妖小紅娘》";
     model.CoverImg = "/Content/Music/夢回還-cover.jpg";
     model.FileUrl = "/Content/Music/夢回還.mp3";
     model.MusicStartSecond = 0;
     model.MusicEndSecond = 250;
     break;
   }
   return View(model);
  }

頁面代碼

@using FunctionTest.Web.Areas.Function.Models;
@model MusicPlayerModel
@{
 ViewBag.Title = "MusicPlayer";
 Layout = "~/Areas/Function/Views/Shared/_FunctionLayout.cshtml";
}
<link href="~/Assets/Function/MusicPlayer/musicPlayer.css" rel="external nofollow" rel="stylesheet" />
<script src="~/Assets/Function/MusicPlayer/musicPlayer.js"></script>
<div class="img-wapper">
 <img src="@Model.CoverImg" />
</div>
<div id="player-wapper" class="player-wapper">
 <div class="cover-wapper">
  <img src="@Model.CoverImg" />
  <div class="play">
   <i></i>
  </div>
 </div>
 <div class="info-wapper">
  <div class="title">@Model.MusicName</div>
  <audio id="audio-player" src="@Model.FileUrl" data-src="@Model.FileUrl" data-start="@Model.MusicStartSecond" data-end="@Model.MusicEndSecond" ></audio>
  <div class="audio-progress">
   <span id="start-time" class="start-time">00:00</span>
   <div id="progress" class="progress">
    <span id="player-progress-bar" class="bar">
     <i></i>
    </span>
   </div>
   <span id="end-time" class="end-time">00:00</span>
  </div>
 </div>
</div>

Js

;$(function () {
 var $playerWapper = $("#player-wapper"),
  $audioPlay = $("#audio-player"),
  startSecond = $audioPlay.data("start"),//默認開始時間(秒)
  endSecond = $audioPlay.data("end"),//默認結(jié)束時間(秒)
  playSecond = startSecond,//已播放時間(秒)
  surplusSecond = endSecond,//剩余時間(秒)
  audoiTimer = null;
 LoadingTime();
 Playing();
 //通過點擊進度條實現(xiàn)播放跳轉(zhuǎn)
 $(".progress").click(function (e) {
  //獲取當前鼠標相對進度條的X坐標
  var positionX = e.pageX - $(this).offset().left; 
  var width = $(this).width();
  //進度條的X坐標/進度條寬度獲取播放占比
  var progess = (positionX / width).toFixed(2);
  $("#player-progress-bar").css("width", progess);
  //播放占比*總時間獲取已播放時間
  playSecond = parseInt(progess * endSecond);
  surplusSecond = endSecond - playSecond;
  //播放器跳轉(zhuǎn)/跟新播放時間
  $audioPlay[0].currentTime = playSecond;
  LoadingTime();
 })
 //播放按鈕點擊事件
 $(".play").click(function () {
  if ($playerWapper.hasClass("playing")) {
   Pause();
  }
  else {
   Playing();
  }
 })
 //開始/繼續(xù)播放
 function Playing() {
  $playerWapper.addClass("playing");
  $playerWapper.removeClass("pause");
  $audioPlay[0].play();
  audoiTimer = setInterval(function () {
   playSecond++;
   surplusSecond--;
   LoadingTime();
   if (surplusSecond <= 0) {
    playSecond = startSecond;
    surplusSecond = endSecond;
    Pause();
   }
  }, 1000); //每個1秒執(zhí)行一次
 }
 //暫停播放
 function Pause() {
  $playerWapper.removeClass("playing");
  $playerWapper.addClass("pause");
  window.clearInterval(audoiTimer);
  $audioPlay[0].pause();
 }
 //加載時間和進度條
 function LoadingTime() {
  $("#start-time").html(secondToTime(playSecond));
  $("#end-time").html(secondToTime(surplusSecond));
  $("#player-progress-bar").css("width", Percentage(playSecond, endSecond));
 }
 //計算百分比
 function Percentage(second1, second2) {
  return (Math.round(second1 / second2 * 10000) / 100+ "%");// 小數(shù)點后兩位百分比
 }
 //時間轉(zhuǎn)換,將秒轉(zhuǎn)為00:00:00格式
 function secondToTime(s) {
  var t;
  if (s > -1) {
   var hour = Math.floor(s / 3600);
   var min = Math.floor(s / 60) % 60;
   var sec = s % 60;
   if (hour < 10) {
    t = '0' + hour + ":";
   } else {
    t = hour + ":";
   }
   if (min < 10) { t += "0"; }
   t += min + ":";
   if (sec < 10) { t += "0"; }
   t += sec;
  }
  return t;
 }
})

總結(jié)

以上所述是小編給大家介紹的基于JavaScript實現(xiàn)簡單的音頻播放功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

相關文章

  • 基于微前端qiankun的多頁簽緩存方案實踐

    基于微前端qiankun的多頁簽緩存方案實踐

    這篇文章主要介紹了基于微前端qiankun的多頁簽緩存方案實踐,本文對qiankun框架的使用沒有做太多的發(fā)散總結(jié),官網(wǎng)和Github上已經(jīng)有很多相關問題的總結(jié)和踩坑經(jīng)驗可供參考,需要的朋友可以參考下
    2022-08-08
  • 指定區(qū)域的圖片自動按比例縮小的js代碼(防止頁面被圖片撐破)

    指定區(qū)域的圖片自動按比例縮小的js代碼(防止頁面被圖片撐破)

    有時候我們更新的內(nèi)容,有很多的大圖片,就會導致頁面變形或看不到全圖。一般情況我們用css的max-width控制,但有些瀏覽器不支持,我們也可以用js做個補充
    2014-02-02
  • 基于JavaScript編寫8086匯編指令查詢工具

    基于JavaScript編寫8086匯編指令查詢工具

    匯編語言還是在大學的時候?qū)W的,匯編語言有個特點是語句短、條數(shù)多,很難可以把全部指令都背熟。本文就來用JavaScript編寫一個8086匯編指令查詢工具,希望對大家有所幫助
    2023-02-02
  • JavaScript基礎語法之js表達式

    JavaScript基礎語法之js表達式

    這篇文章主要介紹了JavaScript基礎語法之js表達式 的相關資料,需要的朋友可以參考下
    2016-06-06
  • JS?const關鍵字生成常量的三個特點介紹

    JS?const關鍵字生成常量的三個特點介紹

    這篇文章主要介紹了JS?const關鍵字生成常量有哪些特點,下面通過代碼演示const關鍵字聲明的常量的塊級作用域效果,需要的朋友可以參考下
    2023-05-05
  • JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實例解析

    JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實例解析

    在函數(shù)內(nèi)部,有兩個特殊的對象:arguments和this。這篇文章主要介紹了函數(shù)內(nèi)部屬性之a(chǎn)rguments和this ,需要的朋友可以參考下
    2018-10-10
  • JavaScript代碼性能優(yōu)化總結(jié)(推薦)

    JavaScript代碼性能優(yōu)化總結(jié)(推薦)

    下面小編就為大家?guī)硪黄狫avaScript代碼性能優(yōu)化總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-05-05
  • 原生javascript如何實現(xiàn)共享onload事件

    原生javascript如何實現(xiàn)共享onload事件

    這篇文章主要介紹了原生javascript如何實現(xiàn)共享onload事件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • webpack 打包壓縮js和css的方法示例

    webpack 打包壓縮js和css的方法示例

    本篇文章主要介紹了webpack 打包壓縮js和css的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • JavaScript中對象屬性描述符的使用詳解

    JavaScript中對象屬性描述符的使用詳解

    屬性描述符是 ECMAScript 5 新增的語法,它其實就是一個內(nèi)部對象,用來描述對象的屬性的特性,下面小編就來為大家詳細介紹一下js中對象屬性描述符的使用,需要的可以參考下
    2023-11-11

最新評論