Skip to content

Barrage 弹幕

介绍

实现观看视频时弹出的评论性字幕功能。

引入

js
import { createApp } from 'vue';
import { Barrage } from '@szhn/dh-design-mobile';

const app = createApp();
app.use(Barrage);

代码演示

基础用法

通过 v-model 属性绑定弹幕数据。

html
<van-barrage v-model="list">
  <div class="video" />
</van-barrage>
js
const list = ref([
  { id: 1, text: '轻量' },
  { id: 2, text: '可定制的' },
  { id: 3, text: 'Mobile' },
  { id: 4, text: 'Vue' },
  { id: 5, text: '组件库' },
]);

模仿视频弹幕

通过 Barrage 实例的 playpause 方法来控制弹幕播放状态,通过向 v-model 绑定的数组中添加数据来发送弹幕。

html
<van-barrage ref="barrageRef" v-model="list" :auto-play="false">
  <div class="video" />
</van-barrage>
<van-button type="primary" size="small" @click="onAdd">弹幕</van-button>
<van-button size="small" @click="onToggle">开始</van-button>
js
const list = ref([...defaultList]);
const barrageRef = ref();
const paused = ref(false);
let id = 100;

const onAdd = () => {
  list.value.push({ id: id++, text: '弹幕' });
};
const onToggle = () => {
  if (paused.value) {
    barrageRef.value?.play();
  } else {
    barrageRef.value?.pause();
  }
  paused.value = !paused.value;
};

API

Props

参数说明类型默认值
v-model弹幕数据BarrageItem[]-
auto-play是否自动播放booleantrue
rows弹幕文字行数number | string4
top弹幕文字区域顶部间距number | string10
duration弹幕文字滑过容器的时间number | string4000
delay弹幕动画延迟number300

方法

通过 ref 可以获取到 Barrage 实例并调用实例方法。

方法名说明参数返回值
play播放弹幕--
pause暂停弹幕--

Slots

名称说明
default弹幕组件子元素

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
--van-barrage-font-size16px-
--van-barrage-space10px-
--van-barrage-colorvar(--van-white)-
--van-barrage-fontinherit-