原理

把每句歌词都输出为一个li元素,添加data-timeline为该歌词的时间

监听 audio的timeupdate时间,遍历第1步添加的歌词,检测data-timeline为当前audio播放时间的元素

如果相等,则获取该元素的clientHeight并且添加now(高亮className)

获取下一句歌词的时间,如果大于0,证明有下一句歌词,得到下一句歌词和当前句歌词的时间差

使用setTimeout刚才的时间差把当前句歌词的now去掉

歌词容器marginTop滚动

audio.addEventListener('timeupdate', function(e) {

var time = parseInt(e.target.currentTime);

var lines = document.querySelectorAll('[data-timeline]');

var top = 0;

var _thisHeight = 0;

var nextLine = {

i: 0,

time: 0

};

for (var i in lines) {

var line = lines[i];

if (line.dataset != undefined) {

var timeline = parseInt(line.dataset.timeline);

if (timeline == time) {

_thisHeight = line.clientHeight;

line.className = "now";

//获取下一句歌词

nextLine.i = parseInt(i) + 1;

try {

nextLine.time = lines[nextLine.i].dataset.timeline;

}

catch (e) {

}

if (nextLine.time > 0) {

var interval = nextLine.time - timeline;

(function(k) {

setTimeout(function() {

lines[k].className = "";

}, interval * 1000);

})(i);

}

document.querySelector('.lrc>.content').style.marginTop = -(top - _thisHeight) + 'px';

}

else if (timeline < time) {

top += line.clientHeight;

}

}

}

java歌词高亮显示滚动_js如何处理音乐播放器的歌词文件达到高亮以及滚动的效果?...相关推荐

  1. android 歌词同步代码,android手机音乐播放器实现歌词同步

    最近在做一款android手机上的音乐播放器,学习到了很多东西,像是Fragment,ActionBar的使用等等,这里就先介绍一下歌词同步的实现问题. 歌词同步的实现思路很简单:获取歌词文件LRC中 ...

  2. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  3. java歌词解析器_Java swing实现音乐播放器桌面歌词字体变色效果|chu

    最近看到某音乐播放器的桌面歌词如下图 其中字母"U"有两种颜色,突发奇想想模仿一下实现文字变色. 思路:使用两种颜色分别把字符串绘制到两个BufferedImage中,然后根据两种 ...

  4. java电脑桌面网易云界面,Javafx音乐播放器

    Javafx音乐播放器 介绍 这是款由纯java语言开发的在线音乐播放器,当然也支持播放本地的音乐,在本地音乐模块主要采用目前java最主流的音频标记库Jaudiotagger,可解析MP3文件头信息 ...

  5. iOS开发手记-仿QQ音乐播放器动态歌词的实现

    最近朋友想做个音乐App,让我帮忙参考下.其中歌词动态滚动的效果,正好我之前也没做过,顺便学习一下,先来个预览效果. 实现思路 歌词常见的就是lrc歌词了,我们这里也是通过解析lrc歌词文件来获取其播 ...

  6. 安卓音乐播放器中歌词同步问题

    音乐文件是.lrc格式的,lrc格式的文件,是MP3播放器唯一能识别的歌词文件,在MP3播放器中可以去同步 显示歌词.它是一种包含着"[]"形式的"标签"的.基 ...

  7. android MusicPlayer 音乐播放器 Lrc歌词控件的实现

    MusicPlayer Lrc歌词控件的实现 最近在做一个音乐播放器,关于其中歌词控件,上网查过了一些资料,然后进行修改,也算完整的实现了其功能.先看看实现后的效果. 实现的原理实际上是自定义一个Vi ...

  8. iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...

    iOS精选源码 iOS WKWebView的使用源码 模仿apple music 小播放器的交互实现 高仿微信的悬浮小窗口 iOS仿支付宝首页效果 [swift]仿微信悬浮窗 类似于今日头条,网易新闻 ...

  9. 音乐播放器(3)--歌词显示

    上两篇文章讲述了歌词的在线获取,数据的存储,这一片我们讲解一下歌词的显示 我们现在是要在控制台下显示歌词,同时需要按照特定时间的时间显示出特定的歌词,标准的歌词形式如下: [ti:红玫瑰] [ar:陈 ...

最新文章

  1. ubuntu错误解决。
  2. python慕课视频-python爬虫:爬取网站视频
  3. AndroidStudio-使用Translations Editor
  4. Java设计模式(十二) 策略模式
  5. Android HAL 层,三个重要的结构体的源码~
  6. commons-pool
  7. PHP配置,php.ini以及覆盖问题
  8. 学成在线--15.课程计划查询
  9. CSS轮廓样式属性为,简述CSS轮廓样式
  10. CSS: HTML 和 Body 的区别
  11. Windows Server 2008密码重设盘
  12. QGIS2.18二次开发环境搭建--番外篇
  13. 从零开始打造数据中心的N道门槛 | 又拍干货分享
  14. 《黑客与画家》初读笔记
  15. 仿函数适配器(mem_fun/mem_fun_ref)
  16. 企业级应用架构(二)三层架构之数据访问层的封装与抽象
  17. python selenium --鼠标事件
  18. mysql集群session_集群session解决方案
  19. asp.net922-基于Web的房屋中介管理信息系统
  20. 422串口协议解析逻辑设计讨论

热门文章

  1. 古文观止 —— 千古名篇
  2. [面试] C/C++ 语法(六)—— RTTI(运行时类型信息)
  3. 机器学习基础(十八) —— decision stump
  4. Trick(九)—— ++i 与 i++ 的本质区别
  5. C++ 类中特殊成员变量(常量、静态、引用)的初始化方法
  6. 复数相关的等式及证明
  7. java反射获取泛型_如何通过Java反射获取泛型类型信息
  8. 整型索引查询mysql是不是快点_图解Mysql索引的数据结构!看不懂你来找我
  9. python软件下载3版本-Python软件下载-Python最新版 v3.7.3 - 动力软件园
  10. 如何自学python知乎-学习Python价格多少?如何学习好?老男孩IT教育