前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是jQuery的源码和Boostrap.js的源码,任务很艰巨呢,加油~在此就不整篇的贴代码了,如果感兴趣的小伙伴可以发消息给我,可以把代码传给你们~

正文:

先上效果图

1.布局:Boostrap里的响应式和自适应布局是自然跑不掉的,container中嵌套row再分别嵌套aside和main(H5新标签)和div(id="musicConsole")。aside是左侧的音乐列表,main是右边的歌词显示框,div是下面的控件框。

2.主要实现功能:

(1)添加歌曲(歌曲列表右上角的“+”图标)和删除歌曲(歌曲列表右上角的“垃圾箱”图标)

(2)点击歌曲列表中的歌曲:会播放对于曲目;如果有歌词,则滚动显示歌词,如果没有歌词则显示“没有歌词”;进度条和时间会随着歌曲的播放而变化。

(3)点击上一首按钮(竖线+三角形),会播放上一首歌曲:如果有歌词,则滚动显示歌词,如果没有歌词则显示“没有歌词”;进度条和时间会随着歌曲的播放而变化。

点击播放按钮(三角形),会变为暂停按钮(双竖线),歌曲也相应的由播放状态变为暂停状态。

点击下一首按钮(三角形+竖线),会播放下一首歌曲:如果有歌词,则滚动显示歌词,如果没有歌词则显示“没有歌词”;进度条和时间会随着歌曲的播放而变化。

点击音响按钮(喇叭),会变为静音按钮(喇叭+"x"),歌曲也相应的变为静音状态。

点击循环按钮(带箭头的圈),会变为单次播放,保持循环按钮,则会重复单曲循环。

3.遇到的问题:

(1)glyphicon的大小用font-size改变

因为用到Boostrap的图标,默认的大小太小了,试了一下width和height没反应,才反应过来,是用font-size来改变大小的

(2)str.replace(oldStr,newStr)

点击播放按钮时,会改变播放状态,相应的也要改变按钮的图标,所以用到了replace,搞了半天都没有反应,结果发现是因为它是重新生成一个字符串,不是直接在原串上面改,orz

(3)浏览器因为安全考虑,很难读取本地文件

本来打算用localStorage来存音乐列表中的内容的,用H5的FileReader试了半天,没办法,此路不通只有放弃。

FileReader可以用来读取图片或者html文件,它的readeAsDataURL方法能够获取文件路径,说到这个,就真的要笑了,我试着存了一个音乐文件,ok,再来,啥?localStorage内存用完了?5M就存一个文件路径?逗我?

以下的问题,全部是歌词部分了。。。做的时候真的有很心累的感觉。。。

(4)解析歌词时遇到的问题

歌词一般是lrc文件,其实就是纯文本,用AJAX可以获得后台传过来的数据,但是没有后台陪我玩啊,所以就只能直接把歌词copy过来,当做死数据,写在字符串里。

原计划用split('\r\n')把字符串分解为一句一句的歌词,放到数组里。

结果各种报错啊,搞了半天,最后定位在这个split上了,网上查了半天,哦,原来是js的锅。

因为js语法不强制在最后结尾加分号,所以用系统换行符会(即,回车)被卡死。主要有两个应对方案:

1)手动删除换行符,改用\n换行,此方案在页面上会有换行效果

2)在系统换行符前面加\,此方案在页面上无换行效果

(5)滚动歌词时遇到的问题

歌词添加成功后,完美的显示了,但是还要和音乐同步才行,和当前播放时间的比对,相应的歌词列表的top向上移动多少,当歌词为空时的判断,最后边界的判断,这些问题都搞定后,又冒出来一个循环播放,歌词不能重新显示。搞了半天,我去,居然是因为loop=true时,ended事件监听不到,没办法,只能舍弃loop,在ended的事件里面加入对loop的判断了。

嗯,很好,完美的显示了,心情有点小激动。到处乱点,测试看还有没有问题,想着应该可以完结了的时候,又出错了【冷漠.jpg】,接着调吧。先找出错误的原因,在F12开发人员工具(我去百度,上面就是这么写的)中,看到歌词active样式变化居然有两个同时添加,所以向上滚动才会这么快,而且还一会儿上一会儿下的乱跳。找到罪魁祸首了,setTimeout。因为是递归调用,所以需要clclearTimeout来清除。ok,现在基本没问题啦。

后话:

啊,还有,因为我最近很迷马鹿啊,所以就亲切的给我的播放器取个名字叫“摩洛哥播放器”吧~【大哥比哈特】做这个Demo花了三天时间,单是歌词就调了一半以上的时间,而且可以看到,遇到的主要问题都是歌词的显示问题,醉了。不过,不论怎么说,最后做出来了, 看到它终于能正常的滚了,那种成就感还是很有的。虽然做出来了,但是就在我写这篇博客的时候,我又发现错误了orz。

以上所述是小编给大家介绍的使用HTML5+Boostrap打造简单的音乐播放器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

html 自适应 音乐播放器,使用HTML5+Boostrap打造简单的音乐播放器相关推荐

  1. 在线音乐播放器 html,html5实现在线响应式音乐播放器

    大概很早的时候就有想法做一个音乐播放器玩玩,以前可能还考虑过做APP,大一的时候第一个html的静态页面也是做的音乐网站,想想,大概小时候比较喜欢音乐吧.然而,现在入了前端大坑,就用h5做一个耍耍好了 ...

  2. PHP制作音乐播放器制作教案,js制作简单的音乐播放器的示例代码

    一.设计目的: 1.随着现在人民生活质量的提高同样伴随着生活压力的增大,越来越多的人追求越来越多的娱乐,其中一种娱乐方式就是音乐,于是突发奇想,制作一个音乐播放器. 2.主要功能: 1 支持循环自动播 ...

  3. java仿qq空间音乐播放_使用JS改造的简单网页音乐播放器,仿QQ空间样式

    最近有好多东西要发表分享给大家,但由于时间问题,越多反而显得越乱,都不知道从何下手,该做的事情还有很多,最近整博客,又整得有点不兼容了,在想抽个时间修复它,可能时间要比较长,因为无从下手,必须一个一个 ...

  4. python开发网页视频播放器_HTML5 VideoAPI,打造自己的Web视频播放器

    本文将使用HTML5提供的VideoAPI做一个自定义的视频播放器,需要用到HTML5提供的video标签.以及HTML5提供的对JavascriptAPI的扩展. 一.基础知识 1.用法 注意:au ...

  5. python装饰器的通俗理解_简单理解Python装饰器

    Python有大量强大又贴心的特性,如果要列个最受欢迎排行榜,那么装饰器绝对会在其中. 刚接触装饰器,会觉得代码不多却难以理解.其实装饰器的语法本身挺简单的,复杂是因为同时混杂了其它的概念.下面我们一 ...

  6. html音乐播放器 频谱,HTML5 Canvas 实现简易 绘制音乐环形频谱图

    0.启发 在B站我们有很多的小伙伴们应该都看到过用AE做的可视化音乐播放器播放音乐的视频,看着特别酷炫带感有木有. B站截图 B站截图 B站截图 所以今天我就用 Canvas 做个简单 环形频谱图. ...

  7. html5怎能编写播放器代码,HTML5应用-实现简单播放器的示例代码分享

    如今HTML已经是比较热门的了,各种关于HTML5的应用程序.游戏.应用商店等也如火如荼的展开了.各大主流浏览器也纷纷开始支持HTML5标准,以备打赢新的一轮浏览器大战. 话不多说,不知道大家有没有发 ...

  8. html5视频播放器原理,HTML5 - 两款基于JS的视频播放器的使用说明(VideoJS和jPlayer)...

    通常我们使用HTML5播放器播放视频时,还要考虑浏览器兼容.像IE8这种不支持的古董级浏览器,就需要提供Flash播放器作为备用方案.这些如果都要自己弄就很麻烦. 这里推荐两个好用的HTML5媒体播放 ...

  9. html音乐跳动的线,HTML5 Audio+Matter.js 随音乐节奏而动的踩单车杂技表演

    JavaScript 语言: JaveScriptBabelCoffeeScript 确定 var player = document.createElement('audio') player.sr ...

  10. 手机版m3u8合并器_100行代码,打造自己的视频下载器

    编者的话:    hello,小伙伴们.我是"风尘",今天又来给大家分享知识啦.为了提起大家对编程的兴趣,今天给大家带来一个用python语言编写的视频下载器.让互联网上的视频&q ...

最新文章

  1. Linux服务器部署ssl证书教程,linux服务器在wdcp面板安装ssl证书教程
  2. find命令详解(原创)
  3. 虚拟机克隆以后出现“需要整合虚拟机磁盘”的解决方法
  4. 计算机视觉--优秀开源方案集锦
  5. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——RNN
  6. 作用域、执行环境、闭包(四)
  7. 作者:景志刚(1977-),男,就职于中国人民银行征信中心数据部
  8. excel分类_Excel小技巧61:将输入的数字显示为中文
  9. 成为大数据工程师需要哪些技能?(一文秒懂大数据)
  10. zabbix企业应用之固定端口监控memcache
  11. github库fork后,将更新提交到源库
  12. pytorch bert文本分类_一起读Bert文本分类代码 (pytorch篇 三)
  13. JetBrains系列产品学生认证申请免费使用教程
  14. 微博三方登陆原理讲解
  15. Linux eBPF内核源码sample/bpf全网最细解析(一)
  16. 如何减小电压跟随器输出电阻_逐次比较式模数转换器如何获取最佳采样频率
  17. 激光雷达还是摄影测量?两者数据融合如何提高点云质量
  18. c++二叉排序树的非递归插入与递归插入,递归之间不同写法的思考
  19. Dobot magician + realsense D435i 手眼标定(外参)
  20. windows下回车换行符在Linux下显示^M问题

热门文章

  1. 没有找到MSVCR100.dll解决方法
  2. python梦幻西游辅助_GitHub - fanxueqian/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...
  3. 如何解决Flash CS6打开后闪退的问题
  4. 书籍之 Head First HTML与CSS
  5. 组态软件及其应用方式
  6. Windows10重新安装软件商店
  7. 怎么完全卸载赛门铁克_卸载Symantec Endpoint Protection, 无需password的卸载方法
  8. 完全卸载Oracle方法(最简便最详细最快捷)
  9. 搭建国产化统信UOS操作系统虚拟机
  10. 数电——全减器分析(用74HC138设计提示)