aiaiask.com©

开花即结果 提问即答案

vue实现歌词卡拉ok播放效果
原始问题:

vue实现歌词卡拉ok播放效果

要实现歌词卡拉OK播放效果,你可以使用Vue.js框架结合HTML和CSS来实现。下面是一个简单的示例:

首先,你需要准备好歌词数据。可以将歌词以数组的形式存储,每一行歌词作为数组的一个元素,同时包含歌词的时间戳。

data() {
  return {
    lyrics: [
      { time: 0, text: '歌词1' },
      { time: 1000, text: '歌词2' },
      { time: 2000, text: '歌词3' },
      // ...
    ],
    currentTime: 0, // 当前播放时间
    currentLine: 0, // 当前歌词行数
  };
},

接下来,在Vue的模板中,你可以使用v-for指令来遍历歌词数组,并根据当前播放时间和歌词时间戳来判断当前应该显示的歌词。

<div class="lyrics">
  <p v-for="(line, index) in lyrics" :key="index" :class="{ active: index === currentLine }">
    {{ line.text }}
  </p>
</div>

在CSS中,你可以为当前播放的歌词行添加一个特殊的样式,以突出显示。

.lyrics p.active {
  color: red;
  font-weight: bold;
}

最后,在Vue的生命周期钩子函数中,你可以监听音乐播放的时间变化,并根据当前播放时间来更新当前歌词行数。

mounted() {
  this.$refs.audio.addEventListener('timeupdate', () => {
    this.currentTime = Math.floor(this.$refs.audio.currentTime * 1000);
    for (let i = 0; i < this.lyrics.length; i++) {
      if (this.currentTime < this.lyrics[i].time) {
        this.currentLine = i > 0 ? i - 1 : 0;
        break;
      }
    }
  });
},

这样,当音乐播放时,当前歌词行会根据播放时间自动更新,并且当前行的歌词会以特殊样式显示。

以上是一个简单的示例,你可以根据实际需求进行扩展和优化。希望对你有帮助!

vue实现歌词卡拉ok播放效果
https://www.aiaiask.com/ask/44661.html
AI / 模型Siliconflow
时间 / DATEAugust 16, 2023, 1:35 PM
语言zh-CN
IP / 区域上海市上海市