HTML+CSS+JAVASCRIPT 高仿低配网页版网易云音乐播放器

app-poster

前言

没有使用任何框架,只是想用最简单纯js的代码实现下php

  • 前台: Javascript+jQuery
  • 后台: php/nodejs(php是参考网上的例子写的,nodejs代码是在php的基础上从新写的)
  • 还有她的姊妹篇(网易云音乐移动端),请查看这里 github.com/Yangfan2016…

写在前头的话

鄙人野生前端一只,gis专业,自学前端已经一年多了,为何要写个音乐播放器呢?缘由有两个:前端

  1. 本人是网易云音乐的重度用户,近乎疯狂
  2. 自学了前端这么久了,也是想检验下本身的成果吧

本播放器要干什么呢

  1. 简单的 播放 暂停 那固然不能少
  2. 切换歌曲,上一首下一首 也得有
  3. 进度条 ,这个有点复杂,原本想用 input[range] 写,可是样式很差改,本身用多个div代替吧
  4. 进度条都有了,音量调节 不能少吧,毕竟他俩UI样式差很少,照猫画虎呗
  5. 再加一个 静音功能 ,省的音乐太大声,邻居找茬哦(⊙o⊙)

本播放器还能干什么呢

  1. 歌词滚动 有木有
  2. 搜索单曲
  3. 指定歌单播放 这个须要知道歌单的 id 不是很好找,(得上网易云音乐官网登陆本身的帐号,找到歌单,点进去,抬头看URL 里最后的 id 参数)暂时用的是“我喜欢的音乐”(歌单)的id

music-163

那闲话很少说,开整吧(原谅一个理科生的表达能力)

我模仿的是网易云音乐的PC端,所用到的技术都是前端的基本技术 HTML、CSS、JAVASCRIPT
因为我是自学的,没有那么多规矩,我这我的看到是我感兴趣的,我立马就会去作,这个播放器也不例外。node

首先先的将它“画”出来(HTML+CSS)git

我仔细看了下网易云音乐PC端的布局,大体分为四部分,四个模块github

  1. 顶部菜单(顶部导航,叫什么名无所谓了)
  2. 底部播放条 这是播放器的核心
  3. 主体内容在右边 歌单的详细信息和歌曲列表
  4. 左侧是导航和歌单组
  5. 左下角还有一个小窗,显示正在播放歌曲的简要信息,点击小窗 展开一个歌曲详情页

无图不真相 web

pc-music
pc-music

而后呢,写页面逻辑JavaScriptapi

播放器

  1. 播放器的控制按钮 播放(暂停)按钮,这个能够经过play()pause()方法实现
  2. 进度条 这个经过监听timeupdate事件,实施更新当前播放位置, 经过监听鼠标移动事件,改变进度条的长度
  3. 静音按钮,能够经过audio.muted=true实现

初始化歌单列表

网易云音乐获取歌单的API music.163.com/api/playlis…跨域

id 歌单id
复制代码

由于涉及到跨域问题。暂时我前台这边又没有办法跨域,因此参考了网上的代码,写个PHP作代理 (2018-09-14更新:如今代码已改成Nodejs作代理服务),这样就不存在跨域问题了。 获取到歌单数据后,从新渲染下DOMapp

搜索歌曲

网易云音乐获取歌曲的API
s.music.163.com/search/get?…框架

s           搜索内容
type        搜索类型
limit       搜索返回结果数
复制代码

歌曲详情页

主要是歌词和歌词滚动

网易云音乐获取歌词API
music.163.com/api/song/ly…

id 歌曲id
复制代码

歌词滚动,先把获取到的歌词数据分割成时间点和歌词两部分,将这两部分存入dataset中, 经过监听timeupdate事件,判断和当前播放时间相近的歌词,记录它的getBoundingClient()的top值,将滚动条设置到指定位置 例如:ele.srcollTop=100;

先写到这里吧

总结能力太差了,原谅理科生的无奈

附录

完整源码,点击查看
后台代码,点击查看

此文源自个人博客

大佬,给个start呗^_^

相关文章
相关标签/搜索