国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

如何讓音樂播放控制條在js中實現

來源:懂視網 責編:小采 時間:2020-11-27 20:13:27
文檔

如何讓音樂播放控制條在js中實現

如何讓音樂播放控制條在js中實現:前言html5中提供audio標簽, 該標簽實現音頻的播放,之前就一直對于音頻以及視頻播放比較感興趣,一直想要自己實現一個音頻和視頻播放的模塊,這也是本文章撰寫的初衷,最近花了些時間實現了Audio播放控制條,從這個小的模塊實現也學習到了以前沒有接觸到的知
推薦度:
導讀如何讓音樂播放控制條在js中實現:前言html5中提供audio標簽, 該標簽實現音頻的播放,之前就一直對于音頻以及視頻播放比較感興趣,一直想要自己實現一個音頻和視頻播放的模塊,這也是本文章撰寫的初衷,最近花了些時間實現了Audio播放控制條,從這個小的模塊實現也學習到了以前沒有接觸到的知
播放區域

該區域實現音樂的播放、暫停、切換(上一首、下一首),這部分其實沒有什么需要講解的,實際上就是audio api中play()、pause()來實現播放與暫停的,歌曲的切換就是數組元素的改變,修改src地址而已。

進度區域

該區域是整個模塊中核心的部分,該區域主要的功能點是:

  • 進度效果實現

  • 滑動效果實現

  • 首先進度實現,思路是:

  • 進度條有兩個p構成:

  • // 最外層作為進度條暗的長度區域<p> // 最內層是實際表示進度
     <p></p>
    </p>

    進度條

  • 當點擊進度條,獲取鼠標點擊該點的相對于最近的父類元素的x軸方向的偏移量

  • 偏移量就是內層p的實際寬度,設置背景色

  • 滑塊的位置是設置left的值,但是left的值是:偏移量-滑塊寬度/2

  • 滑動的實現,在該模塊編寫中沒有采用html5中的拖放api,而是采用mousedown、mousemove、mouseup來實現的,具體實現代碼:

     // 滑動效果
     bar.addEventListener('mousedown', function(e) {
     e.stopPropagation(); // 獲取滑塊被選擇時相對文檔的初始X軸值
     options.clientX = e.clientX; // 偏移量
     options.left = this.offsetLeft;
     options.max = bgNode.offsetWidth - this.offsetWidth / 2;
     options.isDrag = true;
     });
     document.addEventListener('mousemove', function(e) {
     e.stopPropagation(); if (options.isDrag) { let currentClientX = e.clientX,
     left = options.left,
     max = options.max,
     initClientX = options.clientX,
     barHalfWidth = bar.offsetWidth / 2,
     fgWidth = 0, // 設置要滑動到的位置點(x軸方向偏移量)
     to = Math.max(0, Math.min(max, left + (currentClientX - initClientX)));
    
     bar.style.left = to + 'px'; if (to > barHalfWidth) {
     fgWidth = to + barHalfWidth;
     }
     fgNode.style.width = Math.max(0, fgWidth) + 'px';
     options.offsetX = Math.max(0, fgWidth);
     }
     });
    
     bgNode.parentNode.addEventListener('mouseup', function(e) {
     e.stopPropagation(); if (options.isDrag) { // 繪制此時的進度
     tools.timeUpdateOrVolumeUpdate(options.offsetX, type);
     options.isDrag = false;
     }
     });

    簡單來說就是:

    mousemove時獲取當前鼠標在文檔中的X軸方向位置 - 初始位置 + 元素最初的偏移量,動態改變left的值來實現的

    進度實際就是p的寬度來顯示的,動態的改變width的值以及滑塊的left值來實現進度效果

    這里需要注意的是:

  • 當前進度條總寬度與音頻總時間之間的比例關系,從而計算不同音頻時間點對應的進度的長度,這是基礎

  • 實際上這也非常好計算:

    比例:width / duration
    指定時間的寬度:(width / duration) * currentTime

    音量調節的實現與進度相似,主要是改變volume的實現。

    下面就說說該模塊中存在的問題:

  • 滑塊效果有時不夠自然順暢

  • 音頻文件時間的處理不夠好

  • 開始時進度部分不是太好

  • 代碼會上傳到我的Github,該模塊日后還需要進行改進。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    如何讓音樂播放控制條在js中實現

    如何讓音樂播放控制條在js中實現:前言html5中提供audio標簽, 該標簽實現音頻的播放,之前就一直對于音頻以及視頻播放比較感興趣,一直想要自己實現一個音頻和視頻播放的模塊,這也是本文章撰寫的初衷,最近花了些時間實現了Audio播放控制條,從這個小的模塊實現也學習到了以前沒有接觸到的知
    推薦度:
    標簽: 音樂 音頻 js
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产成人精品999在线观看 | 国产国拍亚洲精品午夜不卡17 | 国产免费全部免费观看 | 91视频高清 | 亚洲激情另类 | 欧美日韩a| 全免费a级毛片免费看不卡 日本二区在线观看 | 亚洲天堂一区二区三区 | 销魂美女一区二区 | 国产午夜免费视频 | 日本不卡视频一区二区三区 | 欧美精品一区二区三区在线 | 国产成人免费高清激情明星 | 国产一区二区免费视频 | 日本成人一区二区 | 国内精品自产拍在线观看91 | 广东东莞一级毛片免费 | 欧美中文在线 | 日韩欧美精品综合一区二区三区 | 欧美日韩国产在线 | 中文字幕第七页 | 亚洲欧洲日韩综合 | 久久a毛片| 欧美视频一区二区在线观看 | 看毛片的网站 | 欧美日韩亚洲综合另类ac | 日本国产一区 | 欧美一区二区不卡视频 | 国产日产高清欧美一区二区三区 | 久久免费国产精品一区二区 | 91国内精品久久久久免费影院 | 国产99在线观看 | 国产日产高清欧美一区二区三区 | 国产激情一区二区三区在线观看 | 国产成人欧美一区二区三区的 | 99精品国产高清一区二区三区香蕉 | 在线观着免费观看国产黄 | 日韩中文字幕第一页 | 97久久综合区小说区图片专区 | 亚洲国产成人久久综合碰 | 午夜三级视频 |