基于JavaScript怎么實(shí)現(xiàn)讓歌詞滾動(dòng)播放
各種音樂(lè)播放器上都有一個(gè)自動(dòng)滾動(dòng)播放歌詞的功能,當(dāng)前滾動(dòng)到的歌詞會(huì)高亮居中顯示,即使歌詞被換行也能正常居中,那么這個(gè)功能基于JavaScript怎么實(shí)現(xiàn)讓歌詞滾動(dòng)播放呢?請(qǐng)看下文詳解。
一般音樂(lè)播放器使用的歌詞格式都是lrc,為了方便處理,我們這里使用XML格式的歌詞。介紹一個(gè)網(wǎng)站:中文歌詞庫(kù)。它提供xml格式的歌詞。
我們先來(lái)看一下這個(gè)例子的最終效果:
下面是基于jQuery的具體代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Player</title> <style type="text/css"> #audio-wrapper{ border:1px solid; text-align:center; } .activated{ color:#33b; font-weight:bold; background:#ddf; } #lrc{ text-align:center; width:360px; height:400px; overflow:hidden; border:2px solid #ddd; box-shadow:2px 2px 2px silver; } .lyrics-container{ position:relative; width:99%; height:80%; border:1px solid red; overflow:hidden; } .lyrics-container2{ position:absolute; width:355px; } #lrc p{ text-indent:0; margin:0; padding:6px; } .music-title,.album,.artist{ margin:0; padding:4px; text-indent:0; text-align:left; } </style> <script type="text/javascript" src="js/jquery-2.1.4.min.js"></script> </head> <body> <div id="#audio-wrapper"> <p><audio src="data/aimei.mp3" controls></audio></p> </div> <div id="lrc"></div> <script type="text/javascript"> $(document).ready(function(){ var $lrc = $('#lrc'); var html =''; $('audio').on('play',function(){ var start = new Date(); if($lrc.html() == ''){ $.ajax({ url:'data/aimei.xml', type:'get', dataType:'xml', success:function(data){ html += '<div class="info">'; if($(data).find('TITLE').length > 0){ html += '<p class="music-title">歌曲:' + $(data).find('TITLE').text()+'</p>'; } if($(data).find('ALBUM').length > 0){ html += '<p class="album">專(zhuān)輯:' + $(data).find('ALBUM').text()+'</p>'; } if($(data).find('ARTIST').length > 0){ html += '<p class="artist">演唱:' + $(data).find('ARTIST').text()+'</p>'; } html += '</div>'; html += '<div class="lyrics-container">' html += '<div class="lyrics-container2">' $(data).find('LRC').each(function(){ html += '<p class="lyrics" tag="'+ $(this).attr('TAG') +'">' + $(this).text() +'</p>'; }); html += '</div></div>'; $lrc.html(html); //alert($(data).find('LRC').length); } }); } var timer = setInterval(function(){ var now = new Date(); var elapsed = now - start; if($lrc.find('.lyrics').length){ $lrc.find('.lyrics').each(function(){ var isOK = elapsed - $(this).attr('tag'); if(isOK < 13 && isOK > 0){ $lrc.find('.lyrics').removeClass('activated'); $(this).addClass('activated'); if($(this).prevAll('.lyrics').length > 3){ $('.lyrics-container2').animate({ 'top':'-=30px' }); //console.log($(this).prevAll('.lyrics').length); } } }); } },10); }); }); </script> </body> </html>
以上內(nèi)容是本文給大家詳解的基于JavaScript怎么實(shí)現(xiàn)讓歌詞滾動(dòng)播放的全部?jī)?nèi)容,希望大家喜歡。
- 如何使用JavaScript實(shí)現(xiàn)無(wú)縫滾動(dòng)自動(dòng)播放輪播圖效果
- 基于JavaScript實(shí)現(xiàn)新增內(nèi)容滾動(dòng)播放效果附完整代碼
- javascript+html5實(shí)現(xiàn)仿flash滾動(dòng)播放圖片的方法
- JS幻燈片可循環(huán)播放可平滑旋轉(zhuǎn)帶滾動(dòng)導(dǎo)航(自寫(xiě))
- javascript實(shí)現(xiàn)圖片循環(huán)漸顯播放的方法
- vue+video.js實(shí)現(xiàn)視頻播放列表
- JavaScript實(shí)現(xiàn)帶播放列表的音樂(lè)播放器實(shí)例分享
- js實(shí)現(xiàn)列表自動(dòng)滾動(dòng)循環(huán)播放
相關(guān)文章
詳解js幾個(gè)繞不開(kāi)的事件兼容寫(xiě)法
本篇文章主要介紹了詳解js幾個(gè)繞不開(kāi)的事件兼容寫(xiě)法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08JS代碼隨機(jī)生成姓名、手機(jī)號(hào)、身份證號(hào)、銀行卡號(hào)
下面小編自己寫(xiě)的一個(gè)js生成器代碼,代碼比較簡(jiǎn)單,實(shí)用性非常高,感興趣的朋友一起學(xué)習(xí)吧2016-04-04JS實(shí)現(xiàn)禁止用戶(hù)使用Ctrl+鼠標(biāo)滾輪縮放網(wǎng)頁(yè)的方法
這篇文章主要介紹了JS實(shí)現(xiàn)禁止用戶(hù)使用Ctrl+鼠標(biāo)滾輪縮放網(wǎng)頁(yè)的方法,涉及javascript頁(yè)面元素與事件相關(guān)操作技巧,需要的朋友可以參考下2017-04-04JS實(shí)現(xiàn)仿新浪微博發(fā)布內(nèi)容為空時(shí)提示功能代碼
這篇文章主要介紹了JS實(shí)現(xiàn)仿新浪微博發(fā)布內(nèi)容為空時(shí)提示功能,2015-08-08JS獲取當(dāng)前時(shí)間的兩種方法小結(jié)
這篇文章主要給大家介紹了關(guān)于JS獲取當(dāng)前時(shí)間的兩種方法,在web開(kāi)發(fā)中,通過(guò)js獲取時(shí)間非常的常用,我這里做個(gè)總結(jié),需要的朋友可以參考下2023-09-09基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效
這篇文章主要為大家詳細(xì)介紹了基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11JS實(shí)現(xiàn)仿PS的調(diào)色板效果完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)仿PS的調(diào)色板效果,結(jié)合完整實(shí)例形式分析了javascript通過(guò)運(yùn)算與動(dòng)態(tài)操作頁(yè)面元素實(shí)現(xiàn)調(diào)色板功能的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12js中Function引用類(lèi)型常見(jiàn)有用的方法和屬性詳解
在本篇文章里小編給大家整理的是關(guān)于js中Function引用類(lèi)型常見(jiàn)有用的方法和屬性知識(shí)點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。2019-12-12