New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

vue-danmaku

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-danmaku

基于 Vue 的弹幕交互组件 | A danmaku component for Vue

latest
npmnpm
Version
2.0.5
Version published
Weekly downloads
144
-52%
Maintainers
1
Weekly downloads
 
Created
Source

vue-danmaku

npm-version size license

基于 Vue3 的弹幕交互组件

简体中文 | English

[!WARNING] 2.0.0 版本开始,vue-danmaku 仅支持 Vue3,Vue2 版本文档请移步至此

Preview

preview

Install

$ npm install vue-danmaku --save

Usage

<template>
  <vue-danmaku v-model:danmus="danmus" loop style="height: 100px;">
    <template v-slot:danmu="{ index, danmu }">
      <span>{{ index }}{{ danmu.name }}:{{ danmu.text }}</span>
    </template>
  </vue-danmaku>
</template>

<script setup>
import vueDanmaku from 'vue-danmaku'

const danmus = ref([
  { name: 'a', text: 'aaa' },
  { name: 'b', text: 'bbb' },
])
</script>

Attributes

参数说明类型可选值默认值
danmus弹幕元素列表,支持纯文本或者自定义对象(支持 v-model)Array字符串或对象[]
channels轨道数量Number0
autoplay是否自动播放Booleantrue
loop是否开启弹幕循环Booleanfalse
loopOnly是否开启弹幕循环时避免重复弹幕Booleanfalse
speeds弹幕速度(每秒移动的像素数)Number200
debounce弹幕刷新频率(ms)Number100
randomChannel随机选择轨道插入Booleanfalse
isSuspend是否开启弹幕悬浮暂停(试验型功能)Booleanfalse
top弹幕垂直间距(px)Number4
right弹幕水平间距(px)Number0
performanceMode是否开启性能模式(默认使用 requestAnimationFrame 代替 CSS 动画)Booleantrue
zIndex弹幕层级Number10
autoResize是否自动监听容器大小变化以重新计算弹幕位置Booleantrue
mirror是否开启镜像模式(弹幕从左向右移动)Booleanfalse
  • 注 1:channels 为 0,则轨道数为容器可容纳最高轨道数
  • 注 2:danmus 初始化后如果为空,则 autoplay 失效。因此对于异步加载的弹幕数据,需要手动调用 refName.value.play() 进行播放
  • 注 3:弹幕刷新频率为每隔多长时间插入一条弹幕
  • 注 4:性能模式默认使用 requestAnimationFrame 代替 CSS 动画,在浏览器不开启硬件加速时,FPS 会非常稳定

Methods

通过以下方式调用:

<vue-danmaku ref="danmakuRef">
  <template #danmu="{ danmu }">{{ danmu }}</template>
</vue-danmaku>

setup() {
  const danmakuRef = ref(null)

  danmakuRef.value.play()
}
方法名说明参数
play()开始/继续播放-
pause()暂停弹幕播放-
stop()停止播放并清空弹幕-
show()弹幕显示-
hide()弹幕隐藏-
reset()重置配置-
resize()容器尺寸改变时重新计算滚动距离-
addDanmu(danmu, position)发送弹幕(统一方法,可指定插入位置)danmu 数据,可以是字符串或对象;position: 当前插入的位置 'current','end',默认为'current'
insert(danmu)绘制弹幕(实时插入,不进行数据绑定)danmu 数据,可以是字符串或对象
getPlayState()获得当前播放状态
getMaxChannels()获得当前最大轨道数
  • 注 1:push 和 add 方法已废弃,请使用 addDanmu 代替
  • 注 2:insert 跟 addDanmu 的区别在于,insert 不存储于内部变量,而是直接插入 DOM,适用于直播等场景

Events

事件名说明返回值
list-end所有弹幕插入完毕-
play-end所有弹幕播放完成(已滚出屏幕)index(最后一个弹幕的下标)
dm-over开启弹幕悬浮暂停时,当进入弹幕,暂停时触发触发的弹幕对象元素
dm-out开启弹幕悬浮暂停时,当离开弹幕,恢复滚动时触发触发的弹幕对象元素
dm-click弹幕被点击时触发{el, index, danmu, event}
dm-remove弹幕被移除时触发{el, index, danmu}
error发生错误时触发{message, code}

更新日志

见 CHANGELOG.md

讨论交流和 BUG 反馈

这个 QA 文档 收集了一些常见问题,可以做阅读参考

也可以给本项目 提交 issue

如果 vue-danmaku 帮助到了你,欢迎 star ヾ(ゝ ω・)ノ

Keywords

vue

FAQs

Package last updated on 27 Oct 2025

Related posts