当前位置:首页 > VUE

Vue实现弹幕漂浮效果

2026-02-09 17:08:35VUE

Vue实现弹幕漂浮效果的方法

使用CSS动画实现基础漂浮 通过CSS的@keyframes定义横向移动动画,结合Vue的v-for动态渲染弹幕元素。弹幕元素需设置position: absolute及随机生成垂直位置。

<template>
  <div class="danmu-container">
    <div 
      v-for="(item, index) in danmuList" 
      :key="index" 
      class="danmu-item"
      :style="{ top: item.top + 'px', animationDuration: item.duration + 's' }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<style>
.danmu-container {
  position: relative;
  width: 100%;
  height: 300px;
  overflow: hidden;
}
.danmu-item {
  position: absolute;
  white-space: nowrap;
  animation: move linear;
}
@keyframes move {
  from { transform: translateX(100%); }
  to { transform: translateX(-100%); }
}
</style>

动态数据绑定与随机参数 在Vue的datasetup中定义弹幕数组,通过方法随机生成垂直位置和动画时长。使用setInterval持续添加新弹幕。

Vue实现弹幕漂浮效果

export default {
  data() {
    return {
      danmuList: [],
      colors: ['#ff0000', '#00ff00', '#0000ff']
    }
  },
  methods: {
    addDanmu(text) {
      this.danmuList.push({
        text,
        top: Math.random() * 250,
        duration: 5 + Math.random() * 5,
        color: this.colors[Math.floor(Math.random() * this.colors.length)]
      })
    }
  },
  mounted() {
    setInterval(() => {
      this.addDanmu('新弹幕' + Date.now())
    }, 1000)
  }
}

优化性能与事件处理 弹幕移出屏幕后应从DOM中移除,避免内存泄漏。通过监听animationend事件实现。

Vue实现弹幕漂浮效果

<template>
  <div class="danmu-container">
    <div 
      v-for="(item, index) in danmuList" 
      :key="index" 
      class="danmu-item"
      :style="{ 
        top: item.top + 'px', 
        color: item.color,
        animationDuration: item.duration + 's' 
      }"
      @animationend="removeDanmu(index)"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    removeDanmu(index) {
      this.danmuList.splice(index, 1)
    }
  }
}
</script>

使用第三方库增强功能 对于复杂需求可考虑使用专门库如vue-danmaku。安装后通过预设配置快速实现高级功能如暂停、速度控制等。

npm install vue-danmaku
import VueDanmaku from 'vue-danmaku'

export default {
  components: { VueDanmaku },
  template: `
    <vue-danmaku 
      :danmus="danmuList" 
      :speed="100" 
      :randomChannel="true"
    />
  `
}

注意事项

  • 弹幕数量需控制,过多会影响性能
  • 移动端需考虑触摸事件冲突
  • 内容安全过滤防止XSS攻击
  • 使用requestAnimationFrame替代setInterval可获得更平滑的动画效果

标签: 效果弹幕
分享给朋友:

相关文章

h5所能实现的效果

h5所能实现的效果

H5能实现的效果 H5(HTML5)作为最新的HTML标准,具备强大的功能和丰富的API支持,能够实现多种现代Web应用效果。以下是H5的主要能力分类: 多媒体支持 H5原生支持音频和视频播放,无需…

uniapp 卡片效果

uniapp 卡片效果

uniapp 实现卡片效果的方法 使用 view 和 CSS 样式 通过 view 组件结合 CSS 样式可以快速实现卡片效果。设置圆角、阴影和边距来增强视觉层次感。 <view cl…

vue实现凤凰效果

vue实现凤凰效果

Vue 实现凤凰效果 凤凰效果通常指一种视觉动画,模拟凤凰展翅、火焰燃烧等动态效果。在 Vue 中实现这种效果,可以结合 CSS 动画、Canvas 或第三方动画库(如 GSAP)。以下是几种实现方式…

vue实现轮播效果

vue实现轮播效果

使用Swiper插件实现轮播 安装Swiper及相关依赖: npm install swiper vue-awesome-swiper 组件代码示例: <template> <…

vue实现菜单效果

vue实现菜单效果

Vue实现菜单效果的方法 基础菜单实现 使用Vue的v-for指令和v-show/v-if可以快速实现基础菜单。通过数据驱动的方式渲染菜单项,结合事件处理实现交互。 <template>…

vue实现发送弹幕

vue实现发送弹幕

Vue 实现发送弹幕功能 创建弹幕组件 在 Vue 项目中创建一个弹幕组件 Danmu.vue,用于显示和管理弹幕。组件包含弹幕容器和发送弹幕的表单。 <template> <…