AudioPlayer.js,一個響應式且支持觸摸操作的jquery音頻插件


AudioPlayer.js是一個響應式、支持觸摸操作的HTML5 的音樂播放器。本文是對其官網的說用說明文檔得翻譯,博主第一次翻譯外文。不到之處還請諒解、之處。

JS文件地址:http://osvaldas.info/examples/audio-player-responsive-and-touch-friendly/audioplayer.js

你可以在右鍵點擊上面的地址,然后選擇另存為把JS文件保存到本地。

英文原文地址:http://osvaldas.info/audio-player-responsive-and-touch-friendly

Audio Player:響應式且支持觸摸操作

    幾個月前,我做了一個Jquery插件,用自定義的HTMl代碼來取代<audio>標簽。通過寫一些css你可以得到一個全新的、個性化的並且和功能和默認一樣強大的播放器。沒有辦法直接修改元素的樣式。但是html5文檔模型中的元素有方法、屬性、和事件,這樣就可以很容易實現了。由DragonDean翻譯,首發於碼農自留地

Audio Player: Responsive and Touch-Friendly

 

 

    總而言之,這個插件就是允許你自定義樣式<audio>元素的樣式。這就是為什么我制作了這個插件的原因。我希望播放器可以適應我門前的一個項目(商用IP電話-VOIP)的主題。audio元素提供IVR(交互式語音響應)功能,客戶們可以建立自己的聲音響應程序/菜單,記錄、回放音頻。

    幾個星期之前,我就這個插件為Codrops寫了一篇深入介紹的文章,我推薦給那些在這個領域經驗較少的人。收到了一些很有幫助的反饋,幫助我改進這個播放器。很明顯,這還不是結尾,我希望在這也能收到您的反饋信息。由DragonDean翻譯,首發於碼農自留地

    特點

    在決定自己做這個插件之前,我對現有的可選方案做了一些小的調查。我有明確和嚴格的要求:(1)必須是輕量級的、可定制的、正確的。(2)必須能解決當前的問題,比如響應式的、支持觸摸操作的。(3)必須解決了我目前沒解決的問題。然而,沒有一個通過篩選。事實上重點是我做的這個播放器是:

響應式的

    為達到這個要求,所有的責任都在你的CSS。我的例子是響應式的,你也可以做一個非響應式的,雖然我不推薦這樣做。響應式是好的網頁體驗的一個標志。

    可觸摸操作

    支持觸摸操作也是好的網頁體驗的一個標志。有了這兩項你就從設備和屏幕中獨立出來了。工作已經完成了一半。

    自適應的

    當瀏覽器完全不支持audio元素或是音頻文件的時候,播放器自動更改為一個基於使用第三方插件的播放器(基本上是在mac上市quickTime,在windows上就是windows media player)單按鈕(只有播放/暫停按鈕)<embed/>的元素來播放因為文件。還有一種情況就是不支持javascript的瀏覽器。然后就調用瀏覽器的默認播放器。這也挺好的。

    原生的

    播放器沒辦法直接就是原生的。插件支持audio元素的屬性(src,autoplay,loop,preload)和標簽(<sorce>)。基於這幾點,“autoplay”和“loop”屬性繼承於剛提到了情況。

    實用的

    關鍵的播放/暫停和回放進度控制,開關,增減控制以及音頻的加載進度(緩存)等。

    無圖

    這個也依賴於你的css,我做的播放器完全使用css的,一個圖片文件都沒有用到。做這個以及改變大小都用了em元素。讓播放器可以縮放,拉伸。

    無Flash

    再見,flash。我現在不需要你。

輕量級的

    壓縮版的插件只有4KB大小。

使用方法

添加一個audio元素,設置你需要的屬性並添加資源。你添加的資源越多就有越多的用戶可以聽到你的音頻(因為沒有一種音頻格式支持所有的劉拉你)。由DragonDean翻譯,首發於碼農自留地

三個例子:

<audio src="audio.wav" preload="auto" controls></audio>

這個只加載audio.wav文件並且在點擊播放按鈕之前不會播放。另一個加載值(none,metadata)不會加載文件。

加載后自動循環播放文件可以采用這種方式:

<audio src="audio.wav" preload="auto" controls autoplay loop></audio>

指定多個音頻格式來解決之前提到的問題(譯者注:沒有一種音頻文件支持所有的瀏覽器):、

<audio preload="auto" controls>
    <source src="audio.wav" />
    <source src="audio.mp3" />
    <source src="audio.ogg" />
</audio>

神秘的控件?這是一個任何方式都不能影響插件的布爾屬性,但是確保了不支持javascript時瀏覽器的默認播放器被顯示且顯示出控件。

最后一步-在audio元素上調用插件(如果之前沒有引入jquery和插件文件的話,先引入):

<audio src="audio.wav" preload="auto" controls></audio>
<script src="jquery.js"></script>
<script src="audioplayer.js"></script>
<script>
    $( function()
    {
        $( 'audio' ).audioPlayer();
    });
</script>

插件有一些可選的參數。最重要的就是classPrefix。傳遞的值會成為父元素的類名和子元素的類前綴名。其他參數可能只對非英語有利。舉個默認值得例子:

$( 'audio' ).audioPlayer(
{
    classPrefix: 'audioplayer',
    strPlay: 'Play',
    strPause: 'Pause',
    strVolume: 'Volume'
});

HTML

在開始第一段提到的,插件被調用的時候,audio圓度會被一些html替換掉:

<div class="audioplayer audioplayer-stopped">
    <audio src="audio.wav" preload="auto" controls></audio>
    <div class="audioplayer-playpause" title="Play"><a href="#">Play</a></div>
    <div class="audioplayer-time audioplayer-time-current">00:00</div>
    <div class="audioplayer-bar">
        <div class="audioplayer-bar-loaded"></div>
        <div class="audioplayer-bar-played"></div>
    </div>
    <div class="audioplayer-time audioplayer-time-duration">&hellip;</div>
    <div class="audioplayer-volume">
        <div class="audioplayer-volume-button" title="Volume"><a href="#">Volume</a></div>
        <div class="audioplayer-volume-adjust"><div><div></div></div></div>
    </div>
</div>

當發生下列情況時會有一些類被分配給父元素:

  • 播放器播放時-音頻正在播放
<div class="audioplayer audioplayer-playing">
  • 播放器停止-音頻播放已經停止
<div class="audioplayer audioplayer-stopped">
  • 播放器靜音-聲音靜音狀態
<div class="audioplayer audioplayer-muted">
  • 播放器沒有音量-音量調節不可用:
<div class="audioplayer audioplayer-novolume">

注意:當瀏覽器不支持audio元素或者不支持給出的音頻文件時,播放器轉為最小化模式,只顯示播放器的播放/暫停按鈕(因為embed元素在操作上是受限制的):

<div class="audioplayer audioplayer-stopped audioplayer-mini">
    <embed src="audio.wav" width="0" height="0" volume="100" autostart="false" loop="false" />
    <div class="audioplayer-playpause" title="Play"><a href="#">Play</a></div>
</div>

提示:在插件初始化時使用classPrefix參數,你就可以在html中用你自己的值來替換每個音頻播放器外觀,這樣就可以在一個網站里有多個不同外觀的多媒體播放器了。

現在一切取決於你怎么用css來定義你的播放器樣式。我將跳過這部分,直接舉例,你可以隨時查閱我在Codrops上關於怎么定義樣式的文章。由DragonDean翻譯,首發於碼農自留地

Demo:

之前提到過很多次,我的播放器是響應式的,甚至不依賴媒體查詢。我有一個安排來解釋布局:

Audio Player: Responsive and Touch-Friendly

 

 

父元素.audioplayer是position: relative;子元素.audioplayer-*position: absolute;

 

demo鏈接http://osvaldas.info/examples/audio-player-responsive-and-touch-friendly/  (譯者注:由於是國外網站,加載時間可能稍微長點)

獲取audioplayer.js(未壓縮版:8KB),audioplayer.min.js (壓縮版; 4KB).

本文由DragonDean翻譯,首發於碼農自留地,轉載請注明出處!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM