npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-danmaku

v1.7.2

Published

基于Vue.js的弹幕交互组件

Downloads

380

Readme

vue-danmaku

npm-version npm download size license views

基于 Vue.js 的弹幕交互组件

简体中文 | English

Demo: https://hellodigua.github.io/vue-danmaku

Live Demo: https://jsfiddle.net/hellodigua/j78h6429/99/

现已支持 vue3:vue3-danmaku

Preview

preview

Install

$ npm install vue-danmaku --save

Usage

<template>
  <div>
    <vue-danmaku v-model="danmus" style="height:100px; width:300px;"></vue-danmaku>
  </div>
</template>

<script>
import vueDanmaku from 'vue-danmaku'

export default {
  components: {
    vueDanmaku,
  },
  data() {
    return {
      danmus: ['danmu1', 'danmu2', 'danmu3', '...'],
    }
  },
}
</script>

Attributes

| 参数 | 说明 | 类型 | 可选值 | 默认值 | | :------------ | :------------------------------------- | :------ | :----------- | :----- | | v-model | 弹幕元素列表,支持纯文本或者自定义对象 | Array | 字符串或对象 | [] | | channels | 轨道数量 | Number | | 0 | | autoplay | 是否自动播放 | Boolean | | true | | useSlot | 是否开启弹幕插槽 | Boolean | | false | | loop | 是否开启弹幕循环 | Boolean | | false | | fontSize | 弹幕字号(slot 模式下不可用) | Number | | 18 | | extraStyle | 额外样式(slot 模式下不可用) | String | | | | speeds | 弹幕速度(每秒移动的像素数) | Number | | 200 | | debounce | 弹幕刷新频率(ms) | Number | | 100 | | randomChannel | 随机选择轨道插入 | Boolean | | false | | isSuspend | 是否开启弹幕悬浮暂停(试验型功能) | Boolean | | false | | top | 弹幕垂直间距(px) | Number | | 4 | | right | 弹幕水平间距(px) | Number | | 0 |

  • 注 0:v-model 为 1.5.0 版本起的新语法,支持弹幕的双向绑定,旧版本的 danmus 参数仍继续支持
  • 注 1:channels 为 0,则轨道数为容器可容纳最高轨道数
  • 注 2:danmus 初始化后如果为空,则 autoplay 失效。因此对于异步加载的弹幕数据,需要手动调用 this.$refs[refName].play() 进行播放
  • 注 3:弹幕刷新频率为每隔多长时间插入一条弹幕

内置方法

通过 this.$refs[refName] 调用

| 方法名 | 说明 | 参数 | | :----------- | :------------------------------------------- | :----------------------------- | | play | 开始/继续播放 | - | | pause | 暂停弹幕播放 | - | | stop | 停止播放并清空弹幕 | - | | show | 弹幕显示 | - | | hide | 弹幕隐藏 | - | | reset | 重置配置 | - | | resize | 容器尺寸改变时重新计算滚动距离(需手动调用) | - | | push | 发送弹幕(插入到弹幕列表末尾,排队显示) | danmu 数据,可以是字符串或对象 | | add | 发送弹幕(插入到当前播放位置,实时显示) | danmu 数据,可以是字符串或对象 | | insert | 绘制弹幕(实时插入,不进行数据绑定) | danmu 数据,可以是字符串或对象 | | getPlayState | 获得当前播放状态 | |

  • 注 1:push 和 add 的返回值为插入后的下标,可通过判断下标的方式对当前插入弹幕进行样式定制
  • 注 2:insert 跟 push/add 的区别在于,insert 不进行数据绑定,而是直接插入 DOM,适用于直播等场景

事件

| 事件名 | 说明 | 返回值 | | :------- | :----------------------------- | :-------------------------- | | list-end | 所有弹幕插入完毕 | - | | play-end | 所有弹幕播放完成(已滚出屏幕) | index(最后一个弹幕的下标) |

Slot

如果你有自定义弹幕结构与样式的需求,你可以传入任意结构的对象并自己写内部样式。

<template>
  <vue-danmaku ref="danmaku" v-model="danmus" use-slot loop :speeds="200" :channels="5">
    <!-- 弹幕插槽(vue 2.6.0 及以上版本可使用 v-slot:dm="{ index, danmu }"语法) -->
    <template slot="dm" slot-scope="{ index, danmu }">
      <div>{{ index }}{{ danmu.name }}:{{ danmu.text }}</div>
    </template>
    <!-- 容器插槽 -->
    <div></div>
  </vue-danmaku>
</template>

<script>
import vueDanmaku from 'vue-danmaku'

export default {
  data() {
    return {
      danmus: [{ avatar: 'http://a.com/a.jpg', name: 'a', text: 'aaa' }, { avatar: 'http://a.com/b.jpg', name: 'b', text: 'bbb' }, ...]
    }
  }
}
</script>

讨论交流和 BUG 反馈

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

也可以给本项目 提交 issue

注意事项

  • 必须给 vue-danmaku 组件设置宽高才能正常使用

Changelog

v1.7.2

  • 更新了文档

v1.7.0

  • 优化 resize 逻辑
  • fix: 修复 iOS15 下部分机型的 APP 内置 webview 在弹幕初始化时可能会闪屏的 BUG

v1.6.0

  • feat: 暴露 insert 方法,允许直接外部绘制弹幕

v1.5.0

  • feat: 支持使用 v-model 双向绑定弹幕

v1.4.3

  • feat: push 和 add 方法支持返回插入下标

v1.4.2

  • fix: 修复开启 isSuspend 时节流函数导致悬停失效的 BUG

v1.4.1

  • feat: 新增参数 isSuspend (默认 false),支持鼠标划过弹幕悬浮暂停
  • fix: 修复可能存在的 iOS15 下部分机型可能会闪屏的 BUG

v1.4.0

  • feat: 循环模式下,同屏不允许出现相同弹幕
  • feat: 默认颜色修改为灰色

v1.3.2

  • fix: 修复当弹幕播放完调用 add 无法正常播放的 BUG

v1.3.0

  • feat: 移除 setChannels,改为直传控制
  • feat: 新增弹幕插入完毕事件和播放完成事件
  • feat: 兼容弹幕数据被覆盖的情况
  • fix: 修复弹幕轨道数计算不准的问题
  • fix: 修复首次更新弹幕速度失效的问题

v1.2.1

  • fix: 修复初始化时弹幕容器宽度可能出错的 BUG

v1.2.0

  • speed 参数改为 speeds 参数,含义同样发生变化(主要是为了保证不同屏幕下弹幕移动速度相同)
    • speed: 弹幕经过屏幕的总时长
    • speeds: 弹幕每秒走过的像素距离

v1.1.1

  • 新增 extraStyle,可控制普通弹幕的样式

v1.1.0

  • 新增弹幕插入方法

v1.0.5

  • fix: 修复 iOS 下平移闪烁的问题

v1.0.3

  • fix: 修复使用默认 slot 报错的 BUG

v1.0.0

为了后续版本的易用性,组件参数改为直传。前版本文档请点此查看

  • 组件参数改为直传
  • 部分代码重构

v0.3.6

  • 支持异步加载弹幕(备注:异步加载后应手动调用 play 方法)

v0.3.4

  • 支持随机轨道发送弹幕
  • fix: 非循环模式,播放完成时不应当结束弹幕任务

v0.3.2

  • 支持自动播放
  • 弹幕容器尺寸改变时,重新计算滚动距离

v0.3.1

  • 打包体积优化

v0.3.0

Make Core Code Great Again

  • 支持设置弹幕距离
  • 支持设置弹幕刷新频率

v0.2.0

  • 支持弹幕插槽及对应样式优化

v0.1.1

  • fix: 修复 0.1.0 打包错误导致的无法下载

v0.1.0

  • 支持移动端播放

v0.0.6

  • 支持弹幕速度
  • 支持弹幕字号
  • 支持新增弹幕

v0.0.5

  • 支持弹幕暂停
  • 支持轨道数控制
  • 支持弹幕循环

v0.0.1

  • 2018.3.11: 发布 MVP 版本
  • 支持弹幕效果

License

MIT