原生js+css实现音乐歌词跟随音乐播放滚动动画效果代码
代码语言:html
所属分类:多媒体
代码描述:原生js+css实现音乐歌词跟随音乐播放滚动动画效果代码。
代码标签: 原生 js css 音乐 歌词 跟随 音乐 播放 滚动 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <style> * { margin: 0; padding: 0; } html, body { background: #000; color: #666; text-align: center; } audio { width: 30vw; outline: none; margin: 30px 0; } .container { height: 56vh; overflow: hidden; } ul { list-style: none; /* 不推荐使用 margin-top 来实现歌词向上滚动效果,会改变布局几何信息,从而引发浏览器的重新渲染,导致性能降低(几何信息改变是在浏览器主线程渲染的) */ /* margin-top: -190px; */ /* 推荐使用 transform ,因为 transform 是在其他线程进行渲染绘制的,不会影响主线程,性能较高 */ /* transform: translateY(-190px); */ transition: 0.6s; } .container ul>li { height: 30px; line-height: 30px; transition: 0.6s; } .container ul>li.active { color: #fff; /* 同理这里不通过使用 font-size 来改变选中歌词的大小,是因为改变几何信息导致性能降低 */ transform: scale(1.2); } </style> </head> <body> <audio controls preload="auto" src="//repo.bfw.wiki/bfwrepo/sound/5c89fd22dea6948307.mp3"></audio> <div class="container"> <ul class="lrc-list"> </ul> </div> <script> const data_1_lrc = `[00:01.42]《Im so sorry》 [00:03.68]词曲;马世豪 [00:06.69]verse:1 [00:11.20]I just wanna sorry(只想说声抱歉) [00:13.96]你又引起我的注意 [00:17.22]watch my baby (看着我的宝贝) [00:20.48]I don’t walk away(我不会走开) [00:23.24]I just wanna sorry(只想说声抱歉) [00:26.25]不太容易 [00:29.26]没办法离开你 [00:32.14]再次爱上了你 [00:34.77]有些爱像玻璃杯 [00:38.33]很容易就会破碎 [00:41.29]没办法后悔 [00:44.56]就算口渴不能续杯 [00:47.31]你就是我的视野 [00:50.72]打开了我的世界 [00:53.33]想你了解 [00:56.34]不要再拒绝 [00:59.35]窗外风筝在摇曳 [01:02.11]我做着给你的音乐 [01:06.12]闭上我的眼睛都是你 [01:11.90]路过飞舞的彩蝶 [01:14.41]偷拍你靠我的肩 [01:17.17]只为记录回忆 [01:20.18]Im so sorry [01:23.44]时隔多年 [01:26.20]很多值得去回味 [01:29.96]爱你撒娇时的嘴 [01:32.97]淡淡的香水味 [01:35.48]从没有腻味 [01:38.49]对你的爱没减退 [01:42.00]抱歉又爱上你 my baby [01:44.50]hook: [01:46.76]Im so sorry Oo ~ [01:54.28]Oo ~~~ [01:59.30]Im so sorry Oo ~ [02:05.56]Oo ~~~ [02:11.33]Im so sorry Oo ~ [02:18.60]Oo ~~~ [02:22.86]Im so sorry Oo ~ [02:28.62]Oo ~ [02:33.64]I do it for you(我全是为了你) [02:54.19]verse:2 [02:58.95]可能无法了解 [03:02.21]我为什么说sorry [03:04.97]细细体会 [03:08.23]我又寻到了恋爱的感觉 [03:10.99]想想那是什么滋味 [03:14.25]就像海鸥在飞 [03:17.51]微风轻吹和霓虹互追 [03:23.78]抛去喧闹的大街 [03:26.53]翱翔在淡红色的天 [03:30.80]多少人想找也找不回 [03:35.56]这种奇幻的感觉 [03:38.82]拿着笔和纸来写 [03:42.83]编成音乐如同诗写 [03:47.60]往事提笔挥 [03:50.61]手中琴弦在唱谁 [03:53.87]你我坐态背对背 [03:56.88]乐声在耳边围 [03:59.89]曲终双目对 [04:02.40]两人共饮三两杯 [04:06.16]我不爱佳人爱谁 [04:08.16]Hook: [04:11.17]Im so sorry Oo ~ [04:18.44]Oo ~~~ [04:23.21]Im so sorry Oo ~ [04:30.73]Oo ~~~ [04:34.99]Im so sorry Oo ~ [04:42.14]Oo ~~~ [04:47.30]Im so sorry Oo ~ [04:53.55]Oo ~ [04:56.81]I do it for you(我全是为了你)`; </script> <script> /** * 偏爱 - Lil Ghost小鬼 歌词数据,参考 assets/audio/lyric/偏爱 - Lil Ghost小鬼.lrc */ const data_2_lrc = `[00:00.01]歌曲名 偏爱 [00:00.02]歌手名 Lil Ghost小鬼 [00:00.03]作词:葛大为+Lil Ghost小鬼 [00:00.04]作曲:陈伟 [00:00.39]RAP词/曲:Lil Ghost小鬼 [00:00.64]原唱:张芸京 [00:00.84]编曲:陈令韬/欧智/大肥猫BFCat [00:00.99]制作人:陈令韬 [00:01.19]监制:陈令韬 [00:01.39]混音:李金城 [00:01.54]母带:李金城 [00:01.69]混音监制:陈令韬 [00:01.84]录音师:梁家银 [00:01.99]录音室:Tweak Tone Labs [00:02.14]混音室:432Hz Studio [00:02.29]音频编辑:欧恒 [00:02.44]音乐制作发行: [00:02.64]智慧大狗/环球唱片 [00:02.79]出品人:张葛 [00:03.09]监制:崔恕/王明宇 [00:13.77]Don't say goodbye [00:20.60]我想重来 [00:26.75]更努力爱 [00:32.89]让你能明白 [00:39.42]把昨天都作废 [00:42.71]现在你在我眼前 [00:45.96]我想爱请给我机会 [00:52.04]如果我错了也承担 [00:55.78]认定你就是答案 [01:00.17]我不怕谁嘲笑我极端 [01:04.91]相信自己的直觉 [01:08.50]顽固的人不喊累 [01:11.75]爱上你我不撤退 [01:17.04]我说过我不闪躲 [01:19.98]我非要这么做 [01:22.62]讲不听也偏要爱 [01:24.77]更努力爱让你明白 [01:29.71]我没有别条路能走 [01:32.65]你决定要不要陪我 [01:35.29]讲不听偏爱 [01:36.84]靠我感觉爱 [01:38.49]等你的依赖 [01:41.68]对你偏爱 [01:48.78]即使我说的废话都没用 [01:51.54]逃不出名叫现实的地缝 [01:54.14]确认过心脏是否还会痛 [01:56.02]回忆中一个人的深夜 [01:57.71]看不见星空 [01:58.81]怎么去偏爱 [01:59.81]又怎么把时间作废 [02:01.41]不过是消遣 [02:02.35]是害怕痛的太琐碎 [02:04.05]或许我会 [02:04.90]这次管他到底错与对 [02:06.64]So please girl [02:07.59]就和固执的我Run away [02:09.34]我的世界早已冰冷的无法 [02:11.78]接受这没有你的童话 [02:14.58]没有了你的我快无法呼吸 [02:17.47]A还是B选择你是我的目的 [02:20.06]就算这次没把握 [02:22.41]但我说过不闪躲 [02:27.95]是我着了魔 [02:30.63]我说过我不闪躲 [02:33.13]我非要这么做 [02:35.17]讲不听也偏要爱 [02:37.07]更努力爱让你明白 [02:41.06]我没有别条路能走 [02:43.75]你决定要不要陪我 [02:45.75]讲不听偏爱 [02:47.19]靠我感觉爱 [02:48.49]等你的依赖 [02:51.14]对你偏爱 [02:51.97]Come on [02:52.42]我发誓这次抓紧 [02:53.42]绝不可能会失去你 [02:54.72]是你教我加快了脚步 [02:56.01]不在乎有多远的距离 [02:57.36]所有的痛和梦 [02:58.31]促使我向前冲 [02:59.91]让那些困难全都 [03:01.10]留在一万年以后 [03:02.55]这病症的频率越发地加剧 [03:05.34]尝试了忘了你 [03:06.44]可记忆无法擦去 [03:08.04]这次我偏要错 [03:09.18]和命运去作斗争 [03:10.63]就让时间见证 [03:11.53]答案用你的名字构成 [03:14.10]把昨天都作废`; </script> <script> /** * dom节点对象,方便后续获取 */ const doms = { audio: document.querySelector('audio'), ul: document.querySelector('.lrc-list'), container: document.querySelector('.container'), } /** * 歌词数据 */ // const lrcData = parseLrc(data_1_lrc); const lrcData = parseLrc(data_2_lrc); // ************* 歌词处理相关开始 ************* /** * 解析歌词 * * @param {String} lrcStr 歌词字符串 * @returns {[{startTime:String, lyric:String}]} 歌词对象列表 */ function parseLrc(lrcStr) { if (!lrcStr) { return []; } // 去掉 "[" 并分割歌词 const lrcArray = lrcStr..........完整代码请登录后点击上方下载按钮下载查看
网友评论0