# rc-bullets **Repository Path**: fishLay/rc-bullets ## Basic Information - **Project Name**: rc-bullets - **Description**: 基于CSS3 Animation,使用React构建的弹幕组件 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2020-05-09 - **Last Updated**: 2024-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # React 弹幕 > 🌈基于 CSS3 Animation,使用 React 构建,可扩展,高性能。 [![NPM](https://img.shields.io/npm/v/rc-bullets.svg)](https://www.npmjs.com/package/rc-bullets) [![NPM downloads](https://img.shields.io/npm/dm/rc-bullets.svg)](http://npmjs.com/package/rc-bullets) [![twitter](https://img.shields.io/twitter/follow/wsygc?style=social)](https://twitter.com/wsygc) ## 演示地址 👉[zerosoul.github.io/rc-bullets/](https://zerosoul.github.io/rc-bullets/) ![demo gif](demo.gif) ## 安装 ```bash npm install --save rc-bullets ``` ## 初始化一个简单的弹幕场景 ```jsx import React, { useEffect, useState } from 'react'; import BulletScreen, { StyledBullet } from 'rc-bullets'; const headUrl='https://zerosoul.github.io/rc-bullets/assets/img/heads/girl.jpg'; export default function Demo() { // 弹幕屏幕 const [screen, setScreen] = useState(null); // 弹幕内容 const [bullet, setBullet] = useState(''); useEffect(() => { // 给页面中某个元素初始化弹幕屏幕,一般为一个大区块。此处的配置项全局生效 let s = new BulletScreen('.screen',{duration:20}); // or // let s=new BulletScreen(document.querySelector('.screen)); setScreen(s); }, []); // 弹幕内容输入事件处理 const handleChange = ({ target: { value } }) => { setBullet(value); }; // 发送弹幕 const handleSend = () => { if (bullet) { // push 纯文本 screen.push(bullet); // or 使用 StyledBullet screen.push( ); // or 还可以这样使用,效果等同使用 StyledBullet 组件 screen.push({msg:bullet,head:headUrl,color:"#eee" size="large" backgroundColor:"rgba(2,2,2,.3)"}) } }; return (
); } ``` ## 特性 - 支持传入 React 组件,灵活控制弹幕内容和 UI,并提供一个默认样式组件:`` - 弹幕屏幕管理:清屏,暂停,隐藏(后续可能会加入针对单个弹幕的控制) - 弹幕动画参数化:运动函数(匀速/ease/步进/cubic-bezier)、时长(秒)、循环次数、延迟等 - 鼠标悬浮弹幕暂停 ## 常用 API - 初始化弹幕屏幕:`const screen = new BulletScreen(|,[