网页播放音乐滚动歌词效果

时间:2023年10月23日

/

来源:网络

/

编辑:佚名

当网页播放音频时,可以利用 jQuery 和 HTML 实现歌词滚动的效果。以下是一个简单的实现:
HTML:
<div id="lyrics">
  <p data-time="0:00.00">作词 : 娃娃</p>
  <p data-time="0:01.00">作曲 : 陶喆</p>
  <p data-time="0:04.50">Love... Baby LoveLoveLove baby</p>
  <p data-time="0:12.78"></p>
  <p data-time="0:24.76">请原谅我有决定会让你烦恼</p>
  <p data-time="0:29.29">你要了解并不是你追得我想逃</p>
</div>
<audio id="audio" src="your-audio-file.mp3"></audio>
jQuery:
$(document).ready(function() {
  var audio = $("#audio")[0];
  var lyricDiv = $("#lyrics");
  audio.addEventListener("timeupdate", function() {
    var currentTime = audio.currentTime;
    var lyricP = lyricDiv.find("p");
    lyricP.each(function() {
      var lyricTime = $(this).data("time");
      var lyricText = $(this).text();
      if (currentTime >= convertToSeconds(lyricTime)) {
        $(this).addClass("active").siblings().removeClass("active");
        lyricDiv.animate({scrollTop: $(this).offset().top - lyricDiv.offset().top + lyricDiv.scrollTop() - 100}, 1000);
      }
    });
  });
  function convertToSeconds(time) {
    var parts = time.split(":");
    var minutes = parseInt(parts[0], 10);
    var seconds = parseFloat(parts[1]);
    return minutes * 60 + seconds;
  }
});
CSS:
#lyrics {
  height: 400px;
  overflow: auto;
  text-align: center;
  margin: 0 auto;
}
#lyrics p.active {
  color: red;
}
解释一下上面的代码:
首先,给每一行歌词添加了一个 data-time 属性,表示这一行歌词在音频文件中对应的时间。
在 jQuery 代码中,获取了 audio 元素和歌词所在的 div 元素,并添加了一个 timeupdate 事件监听器。每当音频播放时间更新时,该事件就会触发。
在事件监听器中,首先获取当前音频播放的时间,然后遍历每一行歌词,判断该行歌词是否应该被激活(即是否应该滚动到屏幕中央)。如果是,就添加 active 类,并使用 jQuery 的 animate 方法将该行歌词滚动到屏幕中央。
最后,定义了一个辅助函数 convertToSeconds,用于将时间字符串转换为秒数,以便进行比较。
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。