首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现音乐播放器歌词滚动

音乐播放器歌词滚动是一个常见的前端开发需求,主要涉及HTML、CSS和JavaScript的使用。以下是实现这一功能的基础概念、优势、类型、应用场景以及具体的实现方法。

基础概念

  1. HTML结构:用于布局和显示歌词。
  2. CSS样式:用于美化歌词的显示效果,包括滚动动画。
  3. JavaScript逻辑:用于控制歌词的滚动时机和方式。

优势

  • 用户体验:动态滚动的歌词可以增强用户的沉浸感。
  • 互动性:用户可以与歌词同步,更好地理解歌曲内容。
  • 视觉效果:吸引用户的注意力,提升应用的整体美感。

类型

  • 同步滚动:歌词与音乐播放进度完全同步。
  • 异步滚动:歌词根据预设的时间点进行滚动。

应用场景

  • 在线音乐平台:如网易云音乐、QQ音乐等。
  • 个人博客或网站:增加趣味性和互动性。
  • 移动应用:提升移动端用户的体验。

实现方法

以下是一个简单的示例代码,展示如何使用JavaScript实现音乐播放器的歌词滚动功能。

HTML结构

代码语言:txt
复制
<div id="lyrics-container">
  <div id="lyrics">
    <p data-time="0">Verse 1</p>
    <p data-time="10">Chorus</p>
    <p data-time="20">Verse 2</p>
    <p data-time="30">Bridge</p>
    <p data-time="40">Outro</p>
  </div>
</div>
<audio id="audio" src="path_to_your_music_file.mp3" controls></audio>

CSS样式

代码语言:txt
复制
#lyrics-container {
  height: 200px;
  overflow: hidden;
  position: relative;
}

#lyrics p {
  margin: 0;
  padding: 10px;
  opacity: 0.7;
  transition: all 0.5s ease;
}

#lyrics p.active {
  color: #fff;
  opacity: 1;
  transform: translateY(-20px);
}

JavaScript逻辑

代码语言:txt
复制
const audio = document.getElementById('audio');
const lyricsContainer = document.getElementById('lyrics');
const lyrics = lyricsContainer.getElementsByTagName('p');

function highlightLyric() {
  const currentTime = audio.currentTime;
  for (let i = 0; i < lyrics.length; i++) {
    const lyricTime = parseFloat(lyrics[i].getAttribute('data-time'));
    if (currentTime >= lyricTime && currentTime < lyricTime + 5) {
      for (let j = 0; j < lyrics.length; j++) {
        lyrics[j].classList.remove('active');
      }
      lyrics[i].classList.add('active');
      break;
    }
  }
}

audio.addEventListener('timeupdate', highlightLyric);

解释

  1. HTML部分:定义了一个包含歌词的容器和一个音频播放器。
  2. CSS部分:设置了歌词容器的样式,并定义了激活状态的样式。
  3. JavaScript部分:监听音频的timeupdate事件,根据当前播放时间动态改变歌词的高亮显示。

通过这种方式,可以实现一个简单的音乐播放器歌词滚动效果。如果需要更复杂的功能,如平滑滚动、多行歌词同步等,可以进一步扩展和优化上述代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于Qt的网络音乐播放器(五)实现歌词滚动显示

大体思路就是这样,然后具体实现的时候,还是有许多细节需要注意的,遇到再说,还有就是上面提到的函数等等,在前面的文章中已经建立,下面的代码是直接写实现,如果不知道在哪里写,可查看前面几篇文章。 ?...,label_21匹配当前时间显示的歌词,并且把该歌词前面的歌词和后面的歌词分别发送给其他对应的标签。...这样就实现了动态效果。...4.总结 虽然代码很少,但是完成这个还是用了很长时间实现,反复修改,反复崩溃,没实现前,觉得这个功能,要是能实现多好,实现了后又觉得自己写的太简单了,而且效果有一点僵硬,并没有人家QQ 酷狗啊什么,歌词是慢慢往上滑...学习就是这样,来回不断重复,对待问题的看法,逻辑的推理,思维的跳跃,从不会到实现,再到不满足再实现。可执行文件不是你的财富,修改过程中的经验才是,我是花狗,一名苟且偷生的大专生,我们下篇见。

2.4K32
  • iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果

    功能描述:锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、锁屏状态下列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示..., copy) NSString * lrc ; @end 接下来就是要让歌词随歌曲的进度来滚动显示,主要代码如下: self.tableView 显示歌词的 currentTime...当前播放时间点 self.currentRow 当前时间点歌词的位置 //歌词滚动显示 for ( int i = (int)(self.lrcArray.count...[iOS11网易云音乐锁屏界面.PNG] 更新于2018/3/7 上面提到 iOS11系统上 ,不能像以往那样显示锁屏歌词了,那锁屏歌词该怎么显示呢,网易云音乐给出了如下图的设计:她是把当前唱到的歌词放到了锁屏的副标题处...[songDict setObject:@"当前歌词" forKey:MPMediaItemPropertyAlbumTitle]; [网易云音乐锁屏歌词.PNG] [亲,赞一下,给个star.gif]

    2.7K150

    iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果

    功能描述:锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、锁屏状态下列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示..., copy) NSString * lrc ; @end 接下来就是要让歌词随歌曲的进度来滚动显示,主要代码如下: self.tableView 显示歌词的 currentTime...当前播放时间点 self.currentRow 当前时间点歌词的位置 //歌词滚动显示 for ( int i = (int)(self.lrcArray.count...iOS11网易云音乐锁屏界面.PNG 更新于2018/3/7 上面提到 iOS11系统上 ,不能像以往那样显示锁屏歌词了,那锁屏歌词该怎么显示呢,网易云音乐给出了如下图的设计:她是把当前唱到的歌词放到了锁屏的副标题处...[songDict setObject:@"当前歌词" forKey:MPMediaItemPropertyAlbumTitle]; ? 网易云音乐锁屏歌词.PNG

    2.8K70

    js+jquery实现网页播放音乐歌词高亮自动滚动WordPress钻芒简洁美化版

    效果如下: 由于编辑器限制,请移步钻芒博客查看:https://www.zuanmang.net/4787.html 截图: 图片 图片 样式根据自己需求修改 项目说明 想给关于页面加个音乐播放控件,加完看着又想加个歌词滚动...(一体性挺强) 文件名: js+jquery实现网页播放音乐歌词高亮自动滚动WordPress钻芒简洁美化版 文件功能描述:js+jquery实现网页播放音乐歌词高亮自动滚动 author:ZMKI修改...-- /*---------------------------------------------------------------- // 文件名: js+jquery实现网页播放音乐歌词高亮自动滚动...WordPress钻芒简洁美化版 // 文件功能描述:js+jquery实现网页播放音乐歌词高亮自动滚动 // author:ZMKI修改 原作csdn:_冷月心 // 时间:2019年8月21日20:...*/ font-size: 15px; /* 歌词滚动行文字大小 */ } audio { /* 播放器调整区 */ width: 100%; /* 调整播放器宽度

    2.6K31

    Lily_music 网页音乐播放器 -可搜索(附歌词联动播放效果解说)

    博客地址:https://ainyi.com/59 写在前面 这是我今年(2018)年初的小项目,当时也是手贱,不想用别的播放器,想着做一个自己的网页播放器,有个歌曲列表、可关键词搜索、歌词滚动播放的效果...,并使用了一点 es6 的语法 话说个人挺喜欢qq音乐界面的,简洁,当然也少不了背景模糊插件以及滚动条美化相关插件 也用到了弹窗、点击复制歌曲链接和歌词链接相关功能,但是目前歌曲分享功能暂未实现、后续....歌词联动播放 具体谈谈这个功能的实现 歌词解析,我之前做的==乐诗博客==采用的是自己写的一种歌词解析滚动播放的方法 首先明白一般歌词的形式是: 00:13.80期望飞上恬静月球遥望每家的窗 00:18.24...谁伴深爱细味露台玫瑰香 这样子的形式,利用 ajax 异步请求到歌词文件内容,然后就可以进行字符串裁剪,单单取出时间和歌词,html5 播放器可以获取到当前播放时间,就可以实现==当前播放时间==和==...== 就可以直接做一个 for in 循环将每句歌词添加到歌词区域,将时间添加到每句歌词的样式控制 class 名 根据每句歌词的时间,就可以在播放器的 timeupdate 监听事件里实现滚动播放歌词了

    5.5K70

    Winform零基础入门教程-实现音乐播放器的歌词显示功能

    音乐播放器 这是小白学习软件开发系列课程,旨在帮助对电脑编程感兴趣的朋友学习并熟悉电脑编程软件开发C#技术。达到程序员的级别,可以进入公司进行软件编程开发。...上一课链接:Winform零基础入门教程-开发美女音乐播放器软件 程序员 歌词显示分析 如果想要进行歌词显示,则需要后缀名为lrc的歌词文件。通过读取歌词文件进行显示。...下面我打开酷我音乐播放器的歌词文件。发现了我听过的歌曲lrc歌词文件。 ? 酷我音乐盒歌词文件 显示文件后缀名 当然如果你的文件目录没有显示后缀名,如图: ?...设置文件后缀名显示2 歌词显示 歌词显示我们就实现读取,当对应的时间的时候显示歌词就够了。下面看下lrc歌词文件的内容是什么(文本编辑器打开)? ?...显示歌词 今天很少,算是对播放器的一点完善。接下来将要讲解Socket网络编程的知识,带你实现一个C#版本的局域网聊天小软件。 END.

    1.6K40

    自制 h5 音乐播放器 可搜索

    前端模仿qq音乐界面,然后在此之上进行修改的界面,并使用了一点 es6 的语法 话说个人挺喜欢qq音乐界面的,简洁,当然也少不了背景模糊插件以及滚动条美化相关插件, 也用到了弹窗、点击复制歌曲链接和歌词链接相关功能...温馨提醒: 本播放器并不需要什么特别的运行环境,直接下载打开就能用了 ^_^ 响应式优化,可在各种大小的设备运行打开 音乐搜索的结果均来自 qq音乐 (后续会继续扩大到多个平台) 本播放器还有一些 bug...播放模式:ordermode   拖动进度条:controlTime   拖动音量条:controlVoice 上面部分的参数及方法基本涵盖播放器该有的功能 歌词解析,我之前做的乐诗博客采用自己写的一种歌词解析滚动播放的方法...}, 这种歌词解析、联动播放的进度进行滚动是我之前乐诗博客采用的一种方案,感觉也不错 此次采用另一种解析方式,利用 js 正则表达式全部替换的方式 替换方式: 1 var reg = /-/g...) 就可以直接做一个 for in 循环将每句歌词添加到歌词区域,将时间添加到每句歌词的样式控制class 根据每句歌词的时间,就可以在播放器的 timeupdate 监听事件里实现滚动播放歌词了 鼠标拖动进度条的时候

    4.3K40

    mmPlayer:一款基于Vue的自适应Web在线音乐播放器

    说明:一两年前博主曾分享过一个美观的在线音乐播放器MKOnlineMusicPlayer→传送门,不过作者早已停止了维护,最近有小伙伴推荐了mmPlayer,一个使用Vue全家桶打造自适应Web音乐播放器...,模仿QQ⾳乐⽹页版界⾯,主要以为PC端为主,移动端只做相应适配(未做歌词显⽰),现已实现播放器、歌词滚动、排⾏榜、搜索、播放历史、同步⽹易云歌单六⼤功能。...截图 功能 播放器 快捷键操作 歌词滚动 正在播放 排行榜 歌单详情 搜索 播放历史 查看评论 同步网易云歌单 安装 Github地址:https://github.com/maomao1996/Vue-mmPlayer...#或者后台运行 screen -dmS api node app.js 后端地址为ip:3000,如果想改其它端口,比如5555,启动命令为set PORT=5555 && node app.js。.../mm-header.vue,自己找关键词自行修改吧 这里如果你想使用https访问该音乐播放器,那还需要使用https域名反代该api地址,然后将反代后的https域名填进去。

    7.3K11

    【教程】纯前端做一个歌词显示的音乐播放器

    节目:08-1202L/08-1203K:【教程】纯前端做一个歌词显示的音乐播放器 [效果] 用到的文件: Bootstrap 4.6.0 CSS:https://cdn.bootcdn.net/ajax.../libs/twitter-bootstrap/4.6.0/css/bootstrap.css 一段音乐及这首歌的lrc歌词(只要带时间的都可以,这里用lrc举例) 浏览器 jquery(可选,为了查找元素更方便...):https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js 原理及实现: 音乐播放 通过html5的属性进行播放 这里为了方便不开发进度条和控制进度的工具...(核心部分) 预设置: 因为LRC是timelrc 的格式,js不能读取,但js有个很相似的格式:json,因此我们可以把lrc转为json,类似于: [00:01.00]powered [00:02.00...的字体 注意,文本要指定一个id,方便后续获取 js里有个操作,currentTime 给歌词json赋值 var lrcjson

    5.8K62

    VUE---爬虫播放器(四)---功能实现--vue3

    数据处理 编写api.js文件 处理获取的数据 存储歌曲信息 获取歌曲vkey 获取歌曲 处理歌词 获取图像 喜欢或不喜欢歌曲 如果我们找到别的播放器的接口,就可以实现一个播放器,这个接口获取不到就换接口...,就是换源 编写api.js文件 不是自己的接口所以没有设置axios请求拦截器 searchMusic搜索音乐 getKey 获取vkey以便于获取音频 getMp获取音乐 可以直接通过拼接...vkey来实现 见 寻找接口 getLyric 获取歌词 axiosFun文件(可以忽略) api.js中的axios直接为import {axios} from ‘axios’ ?...sip中的两个可以实现切换播放源当sip[0]不可以就切换sip[1]试试看 获取歌曲 我们可以用拼接的形式获 然后生成一个音频对象 在自己的播放器中操作 new Audio(`播放地址`) 处理歌词...因为一开始歌曲歌词不需要滚动 所以我设置300来测试效果 可以通过获取屏幕的高度来设置 let vm = this; ...

    79230

    python在线音乐播放器_python实现音乐播放器「建议收藏」

    python是一个比较活泼的语言,它可以很快速、很方便地实现很多有意思的东西。 最近,学习了一下如何使用python制作一个简单的音乐播放器,整体的效果如下图所示。...import threading import pygame from PIL import Image,ImageTk #新建一个GUI界面 Frame = Tk() Frame.title(“属于自己的音乐播放器...music_name = [] #音乐文件名称 num = 0 #当前所播放的音乐序号 playing = False #音乐是否在播放 flag= 0 #单曲循环 or 顺序播放 skip= 0 #...在音乐列表中选择需要播放的音乐,然后就是出现正在播放的音乐。...大概效果就是这样的,之后还可以继续学习,将它改进成为 展示正在播放歌曲的歌词 首页的图片可以自动轮番播放 播放音乐mv 原文链接:https://blog.csdn.net/yql_617540298/

    3.5K40

    从零开发一个定制版音乐播放器,女朋友不就有了吗?

    今天再带着大家利用 1 小时,码个定制版的音乐播放器出来,想想都刺激。 学会这玩意,距离大伙找到女朋友又进了一步。...配套代码与素材下载链接: 废话不多说,老规矩,先上一张效果图: 开发思路 开发一个定制版的音乐播放器,首先你需要知道音乐播放器的逻辑,实现原理。...开发技术 html css jq 实现思路 1.整理收集素材 2.利用 html + css 布局 QQ 音乐播放器界面 3.导入 jq 库与第三方插件 4.实现音乐播放器,播放,歌词同步、背景变换的逻辑...实现不同首音乐的播放与删除 HTML 代码 <!...$item.addClass("cur"); $item.siblings().removeClass("cur"); // 实现歌词滚动

    83260

    《QQ音乐小电台》小程序开发

    《QQ音乐小电台》主要分享在开发过程中核心功能实现和踩过的坑,希望对开发音频播放的同学有所帮助。...评论) 歌曲播放页(播放暂停,歌词滚动,收藏歌曲,切换歌曲,听歌流水上报,背景魔法色,适配) miniplayer (切换歌曲,状态同步) 核心功能实现 音频状态同步 涉及播放歌曲状态同步,不能使用audio...事件,需要开了一个定时器做歌词滚动,缺点是定时器做歌词渲染有不太精准。...wx.getBackgroundAduioPlayerState 获取后台音乐播放状态,(播放状态同步和歌词渲染) wx.playBackrgoundAudio 使用后台播放器播放音乐,对于微信客户端来说...当用户离开小程序后,音乐将暂停播放;当用户点击“显示在聊天顶部”时,音乐不会暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。

    4.8K10
    领券