用PHP+H5+Boostrap做简单的音乐播放器(进阶版)
前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这个Demo比之前的可以算是进阶呢~v2.0哈哈哈~感觉截图体验很不好呢,所以在美图秀秀上面做了简易的动图,大家感受感受
正文:
老规矩,先上图~感觉有点卡,愿意等的就等等嘛,不愿意等的,往下看,有图片讲解
功能实现:
1.点击音乐列表播放音乐
2.拖动或点击进度条,调节音乐播放进度
3.浮动到音量控件上,出现音量调节器,点击或拖动可调节音量
4.点击+弹出模态对话框,添加歌曲及歌词
5.点击循环播放按钮或顺序播放,如为循环则单曲循环,若为顺序则当音乐播放完毕自动播放下一首,如当前歌曲为最后一首,自动调转到第一首播放
6.删除歌曲,若成功弹出提示成功,失败弹出提示失败
总结:
1.改进的部分
1)之前以为播放按钮是表示的状态,结果被告知是点击之后显示另外一个按钮,以表示当前按钮被点击,谢谢科普~【大哥比哈特】
2)进度条拉动和点击同音量调节的拉动和点击异曲同工,因为进度条不止涉及播放歌曲还有歌词的显示,所以先找软柿子捏,做了音量调节,搞了好一会儿,主要是要获取鼠标点击时的坐标,用clientX来获取老是不对,它会随着窗口大小变化,后来发现了一个好东西pageX,这个会不会随窗口变化,然后就水到渠成啦~进度条稍微多一个歌词的问题,但是因为之前把歌词的方法已经写全了,所以直接找对地方传参调用就ok~
3)把git好好学了一下,真的真的好好用啊~向全世界安利git(不要说我土,对于菜鸟来说git确实用处不大,不像js这种是必学的程度,其实说白了就是懒【摊手】)用git来管理代码真的超棒,没用 过的小伙伴赶紧去试试吧~
2.遇到的问题
(1)前端部分:
1)歌词问题 之前用的原生js,后来又刷了一遍jq(源码还没刷完,我悔过),就改用jq写了,用data来绑定歌词对应的时间,这样在设置歌词样式的时候更简单些,结果!当页面不是激活状 态(如最小化时),歌词滚动就出错了。。。心塞死我了,以为是data的锅,结果不是,是jq的锅,当用js设置滚动的top时就没问题,所以大概是因为jq自己的内部机制?求知道真实原因的大神 给我科普,拜谢~
2)bootstrap中progress-bar(进度条元素)的动画样式老是消除不了,最开始以为是元素样式匹配的优先级不够,结果把各级的div哦,id哦全加上了还是不行,郁闷死了,感觉就是和我作对 嘛,后来发现是自己瓜了(这个锅我背),要用transition-duration:0s(s不能少);来单独设置动画执行的完成时间,这个是立即完成的意思,变现出来就是没有动画效果。(在此不要动画效果 是因为,拖动进度条时有动画特别特别瓜呆,想象你已经拖到了1分钟的地方,结果后面的进度才屁颠屁颠的跟过来,看着就火大,所以必须消除!嗯!)
3)在弹出添加歌曲歌词的摸态框那里本来想设置动画效果(bootstrap实现的是有动画效果的),但是因为我是用js来控制它的显示和隐藏,所以用了display属性,死改了半天还是没有动画效 果,宝宝心疼自己,结果发现动画的显示和隐藏是对于opacity的,对于display没法设置动画的显示隐藏,不是我的锅,开熏~
(2)后台部分:
1)数据库部分:
a)这是个低级到我自己都羞愧的错误,不过就原谅我这个数据库渣渣吧,我在写插入语句的时候,改了好久,终于发现!居然是因为引号的原因,我在values后面要插入的数据部分每个都加 了‘’,当时的想法是,因为他们是字符串啊~加引号是想当然的吧,然后我就想当然的错了,我悔过。。。终于记住不在插入的数据部分加引号了,然后就又想当然的在列名的地方加了引号了, 因为他们是字符串啊~加引号是想当然的吧~【让会长来揍死我吧】
b)数据库老是不能选择,mysql_select_db()执行的结果总是莫名就错了,后来发现锅不在它,是因为mysql_connect()我没传参,所以访问数据库的权限不够,所以取不到。要传入的参 数是'localhost'(一般都是这个),‘数据库账号’,‘密码’,这个应该是你进入mysql 的时候设置的,如果忘了,自己百度去吧~
c)在数据库自己插入了一条测试数据,取出来的时候,中文的地方全部是????【黑人????】什么鬼??赶紧找四爷去——雍正专治八阿哥,在mysql_select_db()前面加一句 mysql_query("set names utf8")就ok了~
2)文件上传:
a)本来计划用$.post配合JSON传递数据的,因为异步而且不会跳转刷新页面,然而我失败了,此处再求大神分享经验,科普用JSON怎么获取到文件~尝试用JSON的时候,因为要获取文件 的路径,所以用了H5的FileReader对象,但是!搞不起,想了想,估计是因为这是本地的服,务,器,而FileReader是用于获取本地文件的,所以会在用readAsDataURL的时候返回null。 (一本正经的fu说八道,再次恳求大神出现,科普科普,有利于人民素质的提高【丽娜的闪亮小虎牙笑】)放弃JSON改用了表单,结果在改变临时文件路径,存储到指定目录下的时候,又一直 报failed to open stream: Invalid argument,这个是个什么鬼?(打开流失败:无效的参数)呃?我完全是按照W3C上面来的啊,我没手贱输入错误吧?结果发现又是,中文的锅, (不,我美丽的方块文字才没有错,╭(╯^╰)╮)在文件名作为参数传入mb_convert_encoding()作为第一个参数,然后是'gbk',‘utf8’)ok,现在世界都清净了,一切都美好了,感觉自己又萌 萌哒~
b)然后测试各种上传歌曲,然后删除,多添加几个试试,呃,全部一模一样的歌你全给输出来感觉就像中病毒一样好嘛???改!如果歌曲文件已经存在于指定目录,那么就提示不能重复上传 相同的歌曲,然后就装作什么都不知道的样子,又返回到摩洛哥音乐播放器页面。file_exists(filename)竭诚为您服务。如果存在返回true,不存在放回false。ok~
后话:
学习php最大的感悟就是,后台其实没有想象中那么男,还是很娘炮的嘛,一幅小受等着被欺负的样子,所以想对像我一样怂的前端小伙伴们说,去学学php嘛,它真的很软妹的,哈哈,愉悦的学习了php,之后要搞nodeJS了,求虐我轻一点,最后的最后,周末还要加班的程序猿和攻城狮们,加油哦~撒拉黑【大哥比哈特】
用PHP+H5+Boostrap做简单的音乐播放器(进阶版)的更多相关文章
- 用H5+Boostrap做简单的音乐播放器
前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是j ...
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
- swift3.0 简单直播和简单网络音乐播放器
本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...
- 基于jQuery仿QQ音乐播放器网页版代码
基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="m ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- python 开发在线音乐播放器-简易版
在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数 ...
- 使用Service组件实现简单的音乐播放器功能 --Android基础
1.本例利用Service实现简单的音乐播放功能,下面是效果图.(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放.) 2.核心代码: MusicService.java: pa ...
- HTML5+CSS3+jquery实现简单的音乐播放器
...最近天热的,感觉就像煎饼...然后别人在把妹子的时候,只有偶们这帮苦逼的程序员在那边撸代码...我日哦! 然后今天晒的是偶早年写的一个播放器...看上去是不是很有感觉的样子!一番宝物,Lisa唱 ...
- Android课程---简单的音乐播放器
第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...
随机推荐
- T-SQL—理解CTEs
在推出SQLServer2005之后,微软定义了一个新的查询架构叫做公共表表达式--CTE.CTE是一个基于简单查询的临时结果集,在一个简单的插入.更新.删除或者select语句的执行范围内使用.再本 ...
- lamp安装
一.简介 什么是LAMPLAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代表的方面 ...
- 编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
package zuoye; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; pub ...
- CentOS 7最小化安装后找不到‘ifconfig’命令——修复小提示
如果你不知道在哪里可以找到ifconfig命令,请按照以下简单的步骤来找到它.首先,让我们找出哪个包提供了ifconfig命令.要完成这项任务,输入以下命令: [root@jrserver app_f ...
- java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
今天把sql server 2008 r2装了起来,64位的,然后就迫不及待地体验连接数据库的操作,编程语言是java.我一开始学了一种非常老的连接方式,使用JDBC-ODBC桥.初次使用不太熟练,所 ...
- 13款经典BI项目报表&界面风格设计方案
说明 1.方案取自报表开发工具FineReport案例的配色方案 2.所有设计方案图中已标注了字体.颜色与间隔距离等,可直接调用. 报表&界面风格设计方案展示 灰蓝界面 绿色与金色 蓝绿清新风 ...
- 150929-拖延高于懒-HTML(End)
四天未更了,分别是因为Xshell和虚拟机链接不好,累,懒(好像是三天..) 就像我一直嗷嗷着要去学开出一样,5年都没有去......拖延症似乎比懒癌更可怕.慢慢的慢慢的,人长大了,小时候的一些东西才 ...
- Java Web之请求和响应
Servlet最主要作用就是处理客户端请求并作出回应,为此,针对每次请求,Web容器在调用service()之前都会创建两个对象,分别是HttpServletRequest和HttpServletRe ...
- 【CSS】使用CSS选择器(第二部分)
1. 使用结构性伪类选择器 使用结构性伪类选择器能够根据元素在文档中的位置选择元素.这类选择器都有一个冒号字符前缀(:),例如 :empty .它们可以单独使用,也可以跟其他选择器组合使用,如: p: ...
- python笔记-调用eval函数出现invalid syntax错误
本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...