没有使用任何框架,只是想用最简单纯js的代码实现下php
鄙人野生前端一只,gis专业,自学前端已经一年多了,为何要写个音乐播放器呢?缘由有两个:前端
我模仿的是网易云音乐的PC端,所用到的技术都是前端的基本技术 HTML、CSS、JAVASCRIPT
因为我是自学的,没有那么多规矩,我这我的看到是我感兴趣的,我立马就会去作,这个播放器也不例外。node
首先先的将它“画”出来(HTML+CSS)
我仔细看了下网易云音乐PC端的布局,大体分为四部分,四个模块git
无图不真相github
而后呢,写页面逻辑JavaScript
播放(暂停)按钮,这个能够经过 play()
和 pause()
方法实现web
这个经过监听timeupdate
事件,实施更新当前播放位置,
经过监听鼠标移动事件,改变进度条的长度api
audio.muted=true
实现网易云音乐获取歌单的API
http://music.163.com/api/play...[id]跨域
id 歌单id
由于涉及到跨域问题。暂时我前台这边又没有办法跨域,因此参考了网上的代码,写个PHP作代理 (2018-09-14更新:如今代码已改成Nodejs作代理服务),这样就不存在跨域问题了。
获取到歌单数据后,从新渲染下DOMapp
网易云音乐获取歌曲的API
http://s.music.163.com/search...[songname]&type=1&limit=10框架
s 搜索内容 type 搜索类型 limit 搜索返回结果数
主要是歌词和歌词滚动
网易云音乐获取歌词API
http://music.163.com/api/song...[id]
id 歌曲id
歌词滚动,先把获取到的歌词数据分割成时间点和歌词两部分,将这两部分存入dataset中,
经过监听timeupdate事件,判断和当前播放时间相近的歌词,记录它的getBoundingClient()的top值,将滚动条设置到指定位置 例如:ele.srcollTop=100;
总结能力太差了,原谅理科生的无奈
此文源自个人博客