码神之路:CSS/CSS3篇程序员ReactNative

基于React的音乐播放器【仿网易云音乐web】

2019-01-08  本文已影响33人  子白青墨

写在前面

1、基于create-react-app脚手架创建,仿网易云音乐web端的一个音乐播放器
2、现在处于1.0版本,没有涉及到api访问,全部都是静态资源,包括音乐资源
3、因为暂时缺失api支持,歌词跟随播放滚动功能暂时缺失,相关收藏分享等业务功能缺失
4、实现了80%以上的播放器自身功能,业务性的功能,没有api,确实没办法实现
5、因为是静态音乐资源,浏览器缓存需要10-20s左右的时间,后期基于整体项目我会换成第三方api的
6、本项目包含音乐播放器主体和一个歌单功能
7、点这里是项目DEMO
8、点这里是GitHub地址,如果对你有帮助,可以给我个赞,是对我的最大鼓励

项目整体截图

react-music-component整体截图.png

播放器入参说明

传入参数 参数类型 参数详细说明 是否必须
musicList Array<object> id:唯一标识<string> ,title:歌曲名称<string> ,info:歌曲作者信息<string> ,resource:资源地址<string> ,time:歌曲持续时长(用于歌单中歌曲信息展示,播放器)<string> ,img:歌曲缩略图地址<string>
onDeleteMusic Function 删除当前歌单指定歌曲方法
onDeleteAllMusic Function 删除当前歌单全部歌曲方法

播放器实现功能

1、歌曲播放相关功能,包括:
(1)歌曲播放、暂停
(2)进度条点击,拖拽
(3)音量调整
(4)上一首歌,下一首歌,切歌功能
(5)播放模式切换(单曲循环,歌单顺序,歌单随机)
2、歌单功能,包括
(1)列表展示歌单
(2)删除全部歌单歌曲,删除歌单中某一首歌曲

核心技术点

1、H5标签audio的相关api使用
2、react基本生命周期使用,组件化思想
3、播放进度条配合audio的css绘制思路

技术点拆分

拖拽鼠标偏移示例图.png

3、音量进度条
音量进度条的绘制类似播放进度条,这里不做多的赘述,需要注意的地方有两点:
(1)音乐播放条是纵向的,计算拖拽需要用pageY和getBoundingClientRect().top
(2)音乐播放条div需要注意z-index,因为会和歌单弹出画面重合,需要保证音乐控制条在歌单的上面

写在最后

本文着重是对于技术点和思路的解析,关于audio更多的方法使用,读者可以自行去官方api查看并研究(audio的api还多着呢),另外关于播放器的实现,主色调是仿的网易云音乐web端的,但是很多UI网易云音乐都是用的background属性,笔者只好自己在阿里开源图标库里面尽量找一些风格比较统一的图标来使用,关于整体布局的实现,有参考网易云音乐web端,但是并没有照抄(吐槽:笔者是真的不喜欢一个行级块内,所有元素都用float:left来实现行级排版这种写法),虽然笔者的写法肯定不是最好的,读者自行借鉴就好。

最后的最后,如果对您有帮助,在GitHub和博客点个赞,就是对我的最大支持了,谢谢!

上一篇 下一篇

猜你喜欢

热点阅读