實現(xiàn)一個高仿低配網(wǎng)頁版網(wǎng)易云音樂播放器

cloud-music-pc.gif

前言

沒有使用任何框架试幽,只是想用最簡單純js的代碼實現(xiàn)下

寫在前頭的話

鄙人野生前端一只,gis專業(yè),自學前端已經(jīng)一年多了,為什么要寫個音樂播放器呢酥泛?原因有兩個:

  1. 本人是網(wǎng)易云音樂的重度用戶,近乎瘋狂
  2. 自學了前端這么久了嫌拣,也是想檢驗下自己的成果吧

本播放器要干什么呢

  1. 簡單的 播放 暫停 那當然不能少
  2. 切換歌曲柔袁,上一首下一首 也得有
  3. 進度條 异逐,這個有點復雜捶索,本來想用 input[range] 寫,但是樣式不好改灰瞻,自己用多個div代替吧
  4. 進度條都有了腥例,音量調(diào)節(jié) 不能少吧辅甥,畢竟他倆UI樣式差不多,照貓畫虎唄
  5. 再加一個 靜音功能 燎竖,省的音樂太大聲璃弄,鄰居找茬哦(⊙o⊙)

本播放器還能干什么呢

  1. 歌詞滾動 有木有
  2. 搜索單曲
  3. 指定歌單播放 這個需要知道歌單的 id 不是很好找,(得上網(wǎng)易云音樂官網(wǎng)登錄自己的賬號构回,找到歌單夏块,點進去,抬頭看URL 里最后的 id 參數(shù))暫時用的是“我喜歡的音樂”(歌單)的id
music-163

那閑話不多說纤掸,開整吧(原諒一個理科生的表達能力)

我模仿的是網(wǎng)易云音樂的PC端脐供,所用到的技術(shù)都是前端的基本技術(shù) HTML、CSS借跪、JAVASCRIPT
由于我是自學的政己,沒有那么多規(guī)矩,我這個人看到是我感興趣的垦梆,我立馬就會去做匹颤,這個播放器也不例外。

首先先的將它“畫”出來(HTML+CSS)

我仔細看了下網(wǎng)易云音樂PC端的布局托猩,大致分為四部分,四個模塊

  1. 頂部菜單(頂部導航辽慕,叫什么名無所謂了)
  2. 底部播放條 這是播放器的核心
  3. 主體內(nèi)容在右邊 歌單的詳細信息和歌曲列表
  4. 左側(cè)是導航和歌單組
  5. 左下角還有一個小窗京腥,顯示正在播放歌曲的簡要信息,點擊小窗 展開一個歌曲詳情頁

無圖不真相


pc-music

cloud-music-pc-wins002.JPG

然后呢溅蛉,寫頁面邏輯JavaScript

播放器

  1. 播放器的控制按鈕
    播放(暫停)按鈕公浪,這個可以通過play()pause()方法實現(xiàn)
  2. 進度條
    這個通過監(jiān)聽timeupdate事件,實施更新當前播放位置船侧,
    通過監(jiān)聽鼠標移動事件欠气,改變進度條的長度
  3. 靜音按鈕,可以通過audio.muted=true實現(xiàn)

初始化歌單列表

網(wǎng)易云音樂獲取歌單的API
http://music.163.com/api/playlist/detail?id=[id]

id 歌單id

因為涉及到跨域問題镜撩。暫時我前臺這邊又沒有辦法跨域预柒,所以參考了網(wǎng)上的代碼,寫個PHP做代理 (2018-09-14更新:現(xiàn)在代碼已改為Nodejs做代理服務(wù))袁梗,這樣就不存在跨域問題了宜鸯。
獲取到歌單數(shù)據(jù)后,重新渲染下DOM

搜索歌曲

網(wǎng)易云音樂獲取歌曲的API
http://s.music.163.com/search/get?s=[songname]&type=1&limit=10

s           搜索內(nèi)容
type        搜索類型
limit       搜索返回結(jié)果數(shù)

歌曲詳情頁

主要是歌詞和歌詞滾動

網(wǎng)易云音樂獲取歌詞API
http://music.163.com/api/song/lyric?os=pc&id=[id]

id 歌曲id

歌詞滾動遮怜,先把獲取到的歌詞數(shù)據(jù)分割成時間點和歌詞兩部分淋袖,將這兩部分存入dataset中,
通過監(jiān)聽timeupdate事件锯梁,判斷和當前播放時間相近的歌詞即碗,記錄它的getBoundingClient()的top值焰情,將滾動條設(shè)置到指定位置 例如:ele.srcollTop=100;

先寫到這里吧

總結(jié)能力太差了,原諒理科生的無奈

附錄

完整源碼剥懒,點擊查看
后臺代碼内舟,點擊查看

此文源自我的博客

大佬,給個start_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕊肥,一起剝皮案震驚了整個濱河市谒获,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌壁却,老刑警劉巖批狱,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異展东,居然都是意外死亡赔硫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門盐肃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爪膊,“玉大人,你說我怎么就攤上這事砸王⊥剖ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵谦铃,是天一觀的道長耘成。 經(jīng)常有香客問我,道長驹闰,這世上最難降的妖魔是什么瘪菌? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮嘹朗,結(jié)果婚禮上师妙,老公的妹妹穿的比我還像新娘。我一直安慰自己屹培,他們只是感情好默穴,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惫谤,像睡著了一般壁顶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溜歪,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天若专,我揣著相機與錄音,去河邊找鬼蝴猪。 笑死调衰,一個胖子當著我的面吹牛膊爪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚎莉,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼米酬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了趋箩?” 一聲冷哼從身側(cè)響起赃额,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叫确,沒想到半個月后跳芳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡竹勉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年飞盆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片次乓。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡吓歇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出票腰,到底是詐尸還是另有隱情城看,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布杏慰,位于F島的核電站析命,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏逃默。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一簇搅、第九天 我趴在偏房一處隱蔽的房頂上張望完域。 院中可真熱鬧,春花似錦瘩将、人聲如沸吟税。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肠仪。三九已至,卻和暖如春备典,著一層夾襖步出監(jiān)牢的瞬間异旧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工提佣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吮蛹,地道東北人荤崇。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像潮针,于是被迫代替她去往敵國和親术荤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355