“你的问题主要是读书不多而想得太多”

我就是这种不读书、没干货,遇到问题缺少实践的人~十分羡慕那些会写博客的人,就我来说,写一遍文章简直要比女人生孩子还要难受,半天憋不出一个字~哎,无奈肚子里没有墨水。罢了,直接入主题。

最近为了体验移动端开发做个了在线播放器,其实就是加了个媒体查询~,这是demo地址!

实现的功能:

  • 播放器的基础操作:上/下一曲,播放/暂停,播放模式,时间轴定位

  • 同步歌词

涉及技术:

  • audio的操作,请参考audio的API

  • 滚动插件iScroll 5

  • 网易云音乐搜索node模块,歌曲来源由node后台服务支撑。

踩到的坑:

  1. 在ios7中,采用dom0级事件处理程序注册audio的ended事件无效,是因为给对象添加了多次?

    _$audio.onended = function () {player.playNext();
    };
  2. 移动端点击操作按钮后,动态伪类:hover后保持hover效果,google后,一行代码解决,美团手机端web就是这样做的。

    document.body.addEventListener("touchstart", function() {});

    css

    .control .btns .ply:active {background-position: -40px -204px;
    }
  3. 异步加载DOM造成的高度问题造成iScroll不能滚动

    player.init(data);
    //待数据加载完毕,再实例化IScroll
    loaded();
  4. 歌词滚动时间校对问题

    歌词滚动的实现我采用hash表存储时间轴和歌词,将歌词文本反序列化成如下格式

    var lry = {'00:00':{index:0,lyric:'不相信会绝望'}};
    $audio.on('timeupdate', function () {if (_audio_duration > 0) {$('.cur').width(_audio.currentTime * 100 / _audio_duration + '%');var curTime = timeDispose(_audio.currentTime);//限定1s刷新一次if (player.curTime !== curTime) {var lrc = player.data[player.curIedex].lyric;if (lrc[curTime]) {player._$lyric_wrap.find('.on').removeClass('on');var p = player._$lyric_wrap.find("p:nth-child(" + (lrc[curTime].index + 1) + ")");p.addClass("on");player._$lyric_wrap.css({"transform": "translate(0,-" + lrc[curTime].index * player.lyricLineHeight + "px)","-ms-transform": "translate(0,-" + lrc[curTime].index * player.lyricLineHeight + "px)","-moz-transform": "translate(0,-" + lrc[curTime].index * player.lyricLineHeight + "px)","-webkit-transform": "translate(0,-" + lrc[curTime].index * player.lyricLineHeight + "px)","-o-transform": "translate(0,-" + lrc[curTime].index * player.lyricLineHeight + "px)"});}player.curTime = curTime;$('.curTime').html(curTime);}}});

    监听播放器的timeupdate事件,在歌词对象用当前播放时间轴位置查找对应歌词以及歌词的。但是会出现错位的bug,

未解决~大家有什么建议呢~

ps:代码实在不够优雅,大家给点意见重构代码吧~

源码

HTML5音乐播放器 1相关推荐

  1. 第六节:用audio标签打造一个属于自己的HTML5音乐播放器

    上一章节,我们刚刚讲了<video>标签,今晚,我们讲的是<audio>标签,这两个东东除了表示的内容不一样以外,其他的特性相似的地方真的太多了,属性和用法几乎一样,也就说,如 ...

  2. html音乐播放器如何添加暂停按钮,HotKey播放/暂停HTML5音乐播放器

    这是我用于HTML5音乐播放器的一小部分JavaScript代码.我想知道你们是否可以帮我建立一个HotKey来使用Space键切换播放/暂停按钮.有什么想法吗? CODE: $('.tracksli ...

  3. 简洁的 HTML5 音乐播放器

    mePlayer 一款简洁的HTML5音乐播放器.内置两套主题,可在运行时一键切换, 点我在线预览 默认主题 有歌词时滚动显示歌词,无歌词时显示模拟频谱动画 播放中鼠标悬停在界面上滑动滚轮可调节音量, ...

  4. 仿网易云音乐html代码,仿网易云音乐外链播放器UI的HTML5音乐播放器插件

    简要教程 APlayer是一款仿网易云音乐外链播放器UI的HTML5音乐播放器插件.APlayer音乐播放器可以自定义歌曲封面,可以自定义同步歌词等,界面时尚大方,是一款非常好的HTML5音乐播放器插 ...

  5. html5自动播放音乐外链,仿网易云音乐外链播放器UI的HTML5音乐播放器插件

    APlayer是一款仿网易云音乐外链播放器UI的HTML5音乐播放器插件.APlayer音乐播放器可以自定义歌曲封面,可以自定义同步歌词等,界面时尚大方,是一款非常好的HTML5音乐播放器插件. 安装 ...

  6. 自己动手,打造一款适合 Python 程序员的 Html5 音乐播放器

    近期断断续续读了一些 Web Audio API 和 WebRTC API 的文档,发现了很多好玩的东西,有一种"忽入桃花源"的感觉.这一款 Html5 音乐播放器,就是基于 We ...

  7. 开源html5在线音乐网站,一个漂亮的开源HTML5音乐播放器——APlayer

    介绍 APlayer是一个简约且漂亮的html5音乐播放器,支持多种模式,包括播放列表模式.吸底模式 .迷你模式.MSE模式.HLS模式. Github https://github.com/diyg ...

  8. HTML5音乐播放器

    明月浩空-HTML5浮窗音乐播放器研发于2014年,并持续更新至今 是基于QQ音乐.酷狗音乐.网易云音乐等歌曲ID全自动解析的网页音乐播放器 依靠服务器强大的接口功能,只需要一个ID既可获取全部信息 ...

  9. html中加入音乐播放器,4个小时实现一个HTML5音乐播放器

    技术点:ES6+Webpack+HTML5 Audio+Sass 这里,我们将一步步的学到如何从零去实现一个H5音乐播放器. 首先来看一下最终的实现效果:Demo链接 => 界面: skPlay ...

  10. web html5音乐播放器设计与实现,基于HTML5技术的音乐播放器的设计与实现

    Vol.33No.11Nov.2017 赤峰学院学报(自然科学版) Journal of Chifeng University (Natural Science Edition )第33卷第11期(下 ...

最新文章

  1. Mindmanager 甘特图杠上Mindmanager 鱼骨图
  2. 安卓惯性传感器(二)
  3. Python有了concurrent的话mutiprocessing和threading还有存在的意义吗?
  4. C#中使用多线程访问Winform问题解决方案
  5. python zip函数转制_Python zip函数及用法
  6. AngularJS1.5+ 笔记
  7. 《隋唐演义》二:竞争对手的实力在不断增强
  8. 人生性格分析02-60干支日
  9. 使用postman发送post请求下载文件
  10. OpenCV玩九宫格数独(一)——九宫格图片中提取数字
  11. 计算机网络物理层测试
  12. uniapp——uni-admin后台管理系统(使用uniCloud免费云服务器)
  13. Oracle数据库数据查询语句示例(包含大部分常用语句)
  14. InDesign 教程如何更改字体和字体大小?
  15. QT实现绘制箱须图(盒须图)
  16. 国学*周易*梅花易数 代码实现效果展示 - 梅花心易
  17. 跳格子/贪心算法例题详解:LeetCode605.种花问题
  18. 推荐个WIN7下小巧的可转录声音的软件-Audio Record Wizard V6.99
  19. 工业智能网关BL110应用之九十三: 实现西门子S7-1500 PLC接入OPC UA云平台
  20. 基于AM5728 DSP+ARM亚马逊物流机器人的设计和实现,实现自动化分拣投递,AGV

热门文章

  1. 高通骁龙8150采用独立NPU,证明了华为的前瞻性
  2. 用这个在电脑上玩QQ飞车手游,效果简直秒杀安卓模拟器和手机
  3. 实例开机显示Booting from Hard Disk
  4. 笔记本中ps的F8快捷键无效解决办法
  5. 苹果Macbook Air怎么安装Win7系统图解教程(图)
  6. 后端配合前端上下箭头调整记录顺序
  7. 网站建设工具对比:IM Creator, Mobirise, Webydo以及uKit
  8. Java报错:om.fasterxml.jackson.core.JsonParseException:
  9. vue-cli--如何使用npm命令
  10. ThinkPad X1 Nano G2评测