没有使用任何框架只是想用最簡单纯js的代码实现下
- 后台: php/nodejs(php是参考网上的例子写的,nodejs代码是在php的基础上重新写的)
- 还有她的姊妹篇(仿网易云音乐源码移动端)请查看這里
鄙人野生前端一只,gis专业自学前端已经一年多了,为什么要写个音乐播放器呢原因有两个:
- 本人是仿网易云音乐源码的重度用户,近乎疯狂
- 自学了前端这么久了也是想检验下自己的成果吧
- 简单的 播放 暂停 那当然不能少
- 切换歌曲,上一首 、 下一首 也得有
- 进度条 这個有点复杂,本来想用 input[range] 写但是样式不好改,自己用多个div代替吧
- 进度条都有了音量调节 不能少吧,毕竟他俩UI样式差不多照猫画虎呗
- 再加一个 静音功能 ,省的音乐太大声邻居找茬哦(⊙o⊙)
- 指定歌单播放 这个需要知道歌单的 id 不是很好找,(得上登录自己的账号找到歌单,點进去抬头看URL 里最后的 id 参数)暂时用的是“我喜欢的音乐”(歌单)的id
那闲话不多说,开整吧(原谅一个理科生的表达能力)
我模仿的昰仿网易云音乐源码的PC端所用到的技术都是前端的基本技术 HTML、CSS、JAVASCRIPT
由于我是自学的,没有那么多规矩我这个人看到是我感兴趣的,我立馬就会去做这个播放器也不例外。
首先先的将它“画”出来(HTML+CSS)
我仔细看了下仿网易云音乐源码PC端的布局大致分为四部分,四个模块
- 頂部菜单(顶部导航叫什么名无所谓了)
- 底部播放条 这是播放器的核心
- 主体内容在右边 歌单的详细信息和歌曲列表
- 左下角还有一个小窗,显示正在播放歌曲的简要信息点击小窗 展开一个歌曲详情页
-
播放(暂停)按钮,这个可以通过
play()
和pause()
方法实现 这个通过监听timeupdate
事件实施更新当湔播放位置,通过监听鼠标移动事件改变进度条的长度
仿网易云音乐源码获取歌单的API
因为涉及到跨域问题。暂时我前台这边又没有办法跨域所以参考了网上的代码,写个PHP做代理 (更新:现在代码已改为Nodejs做代理服务)这样就不存在跨域问题了。
获取到歌单数据后重新渲染下DOM
仿网易云音乐源码获取歌曲的API
仿网易云音乐源码获取歌词API
歌词滚动,先把获取到的歌词数据分割成时间点和歌词两蔀分将这两部分存入dataset中,
总结能力太差了原谅理科生的无奈