HTML5 audio標簽自製音樂播放器

来源:http://www.cnblogs.com/jiaoyu121/archive/2017/06/17/7040808.html
-Advertisement-
Play Games

相關技能 HTML5+CSS3(實現頁面佈局和動態效果) Iconfont(使用矢量圖標庫添加播放器相關圖標) LESS (動態CSS編寫) jQuery(快速編寫js腳本) gulp+webpack(自動化構建工具,實現LESS,CSS,JS等編譯和壓縮代碼) 實現的功能 播放暫停(點擊切換播放狀 ...


相關技能

  • HTML5+CSS3(實現頁面佈局和動態效果)
  • Iconfont(使用矢量圖標庫添加播放器相關圖標)
  • LESS (動態CSS編寫)
  • jQuery(快速編寫js腳本)
  • gulp+webpack(自動化構建工具,實現LESS,CSS,JS等編譯和壓縮代碼)

實現的功能

  • 播放暫停(點擊切換播放狀態)
  • 下一曲(切換下一首)
  • 隨機播放(當前歌曲播放完自動播放下一曲)
  • 單曲迴圈(點擊隨機播放圖標可切換成單曲迴圈)
  • 音量調節(滑鼠移入滑動設置音量大小)
  • 歌曲進度條(可點擊切換進度直接跳,也可以點擊小圓點拖拽切換進度)
  • 實時歌詞(點擊詞,切換歌詞界面,根據實時進度自動滾動歌詞)
  • 喜歡(點擊添加了一個active效果)
  • 分享(可以直接分享到新浪微博)

audio 標簽使用

  • autoplay 自動播放
  • loop 迴圈播放
  • volume 音量設置
  • currentTime 當前播放位置
  • duration 音頻的長度
  • pause 暫停
  • play 播放
  • ended 返迴音頻是否已結束

播放和暫停代碼

_Music.prototype.playMusic = function(){
    var _this = this;
    this.play.on('click', function(){
        if (_this.audio.paused) {
            _this.audio.play();
            $(this).html('');
        } else {
            _this.audio.pause();
            $(this).html('')
        }
    });
}

音樂進度條代碼

_Music.prototype.volumeDrag = function(){
    var _this = this;
    this.btn.on('mousedown', function(){
        _this.clicking = true;
        _this.audio.pause();
    })
    this.btn.on('mouseup', function(){
        _this.clicking = false;
        _this.audio.play();
    })
    this.progress.on('mousemove click', function(e){
        if(_this.clicking || e.type === 'click'){
            var len = $(this).width(),
                left = e.pageX - $(this).offset().left,
                volume = left / len;
            if(volume <= 1 || volume >= 0){
                _this.audio.currentTime =  volume * _this.audio.duration;
                _this.progressLine.css('width', volume *100 +'%');
            }
        }
    });
}

歌詞添加代碼

_Music.prototype.readyLyric = function(lyric){
    this.lyricBox.empty();
    var lyricLength = 0;
    var html = '<div class="lyric-ani" data-height="20">';
    lyric.forEach(function(element,index) {
        var ele = element[1] === undefined ? '^_^歌詞錯誤^_^' :  element[1];
        html += '<p class="lyric-line" data-id="'+index+'" data-time="' + element[0] + '"> ' +  ele + ' </p>';
        lyricLength++;
    });
    html += '</div>';
    this.lyricBox.append(html);
    this.onTimeUpdate(lyricLength);
}

代碼還有很多就不一一添加了,覺得還行的話可以點下喜歡(也可以在我的GitHub給個Star),你的喜歡和Star是我繼續創作的動力,非常感謝!!!源碼加群

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入學習交流群
343599877,我們一起學前端!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前端工程化可以自動化處理一些繁複的工作,提高開發效率,減少低級錯誤。 更重要的是,還是文章開頭的說的,前端工程化最大的意義在於給我們新的視角去看待前端開發,讓前端開發可以做更複雜、更有挑戰的事情! ...
  • 移動互聯網的爆發以及響應式頁面的尷尬症,開發web和mobile項目成為了標配,當然實際情況下,會有更多的項目。 多項目開發對於前端來說是個很大的挑戰✦ 重覆,重覆的前端架構,重覆的前端依賴,重覆的工具函數等✦ 局限,不同後臺有不同的規則,“因地制宜”真難受,剛伺候好rails又突然來個php✦ 最 ...
  • 今天又給Jquery插件“IT小鮮肉 Tree”添加了自定義圖標、自定義標簽顯示功能;目前“IT小鮮肉 Tree”已經具備有checkbox、drag and drop 等基本功能。 廢話不說,直接上圖: 自我感覺良好。主要設置了數據的iconUrl屬性,代碼如下: 還可以通過設置iconCls實現 ...
  • $("#wetg_Left_ipt2").bind("input",function() { //獲取游標位置 var Txt1Curs = $scope.getTxt1CursorPosition(this); var oldtexv = this.value; //格式化字元串4位分割,去掉非字 ...
  • 平時在工作中,偶爾會遇到老大讓你修改原來寫好的樣式,如果修改的多的話,修改起來是非常麻煩的.他不像js一樣,定義變數、函數,需要修改某些值,直接修改方法就行了。less的出現,恰恰幫我們解決了這個問題 在這呢,我們簡要說明一下less: LESSCSS是一種動態樣式語言,屬於CSS預處理語言的一種, ...
  • 三種繼承css方式 1.段內繼承 樣式原文 原文變成 紅色, 原文字體變大 兩個都是通過改變樣式屬性的值去實現的. 語法詳解: 1.每個樣式屬性會有不同的值, "color: red" 通過冒號表達color的屬性. 2.屬性間要用分號間隔和閉合 3.font-size 屬於複合屬性 2. 文檔內繼... ...
  • 包管理器、載入器、測試框架、運行器、QA、MVC框架和庫、模板引擎、數據可視化、時間軸、編輯器等等。 ...
  • 我認為按鈕的繪製分以下三個步驟 第一步,繪製按鈕的輪廓 選擇合適的html標簽,設置輪廓的CSS 選擇合適的html標簽,設置輪廓的CSS 效果圖 仿IOS-1.jpg 仿IOS-1.jpg 第二步,繪製按鈕的預設狀態 這一步很重要,由於我們不會再給html文件添加其他的標簽,所以我們需要用 :af ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...