html字幕无限循环滚动,将文字内容以弹幕墙的形式展示在页面上,需要无限循环滚动播放...

easy-barrage

简单实现一个弹幕库

背景

将文字内容以弹幕墙的形式展示在页面上,需要无限循环滚动播放。

在网上查找一番之后找不到满足需求的库,于是自己动手实现。

tips:该库实现的比较简单,针对特定的需求,需要扩展可以在此基础上自行扩展,或者提出issue,一起学习,共同进步。

基本实现原理

1、根据每条弹幕高度和弹幕展示区域的高度计算出弹幕的行数(称为跑道) laneCount

2、定义一个跑道的状态映射 laneStatus 用来表示该跑道当前的状态 空闲(true)or 占用(false)

3、定义一个数组 data 存储弹幕数据;data 每一个元素是一条弹幕

4、定义一个弹幕状态的映射 itemStatusMap 用来表示该弹幕当前的状态 正在展示中(true)or 不在展示中(false)

4、每隔1秒循环一次跑道(laneStatus),如果有空闲状态的跑道再从弹幕数组(data)中取出一条数据开始渲染,从弹幕展示区域右边进入

5、在弹幕开始进入弹幕展示区域时,将该跑道状态置为false,在完全进入弹幕展示区域后,将该跑道状态置为true

6、在弹幕完全滚出弹幕展示区域时,将该弹幕dom节点删除,并将该弹幕状态置为false

附上效果

374ef1e2a930419f7454e6551605aaf3.png

使用方法

将 src 目录下的 barrage.js 文件复制下来(dist目录下的 barrage.js 为打包后的),通过import方式引入,使用方式如下:

import Barrage from '../src/barrage'

import { barrageData } from './data'

const el = document.getElementsByClassName('container')[0]

const barrage = new Barrage({

container: el, // 必填 弹幕容器

data: barrageData, // 弹幕数据

barrageHeight: 26, // 必填 弹幕的高度 单位px

speed: 3, // 速度参数 可选值为1到5 数值越大速度越快 默认为3

showAvatar: true, // 是否需要显示头像 默认不显示

infinite: true // 是否无限循环 默认是

})

barrage.init()

本地运行

git clone

npm install

npm run dev

浏览器打开 http://0.0.0.0:8080 即可预览

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值