❄️ frost-react:即时降雪 for React
Source: Dev.to
介绍
每到十二月、每次产品发布、每个有趣的着陆页——我总是会遇到同一个小问题:“我只想在我的 React 应用里得到一个干净的降雪效果……为什么这么复杂?”正是这种挫败感促使我创建了 frost-react。
frost-react 是一个轻量级、可访问且可自定义的 React 降雪动画组件——旨在使用简单、性能优秀,并且让开发者和用户都感到愉悦。它以 npm 包的形式分发,提供一个 React 组件。把它放进你的应用,就能立即获得流畅的降雪动画——无需 canvas 设置、动画数学或性能烦恼。
构建使用:
- TypeScript
链接
- GitHub:
- npm:
为什么选择 frost-react?
- 现有方案显得大材小用。 大多数动画库要么过于通用(你仍需自行编写降雪逻辑),要么笨重且为纯视觉效果而过度设计。frost-react 感觉像 即插即用 —— 除非你想自定义,否则无需任何配置。
- 性能至关重要(尤其在移动端)。降雪纯粹是装饰性的;它不应该让你的应用变慢。frost-react 会在移动端自动减少雪花数量,避免不必要的重新渲染,并在低性能设备上保持动画流畅。你仍然可以掌控,但默认设置是安全的。
- 可访问性不应是可选项。 许多用户偏好减少动画。frost-react 尊重
prefers-reduced-motion,使用带有z-index的干净层级,并提供不侵入的默认设置,不会阻塞交互。动画应提升用户体验——而不是伤害它。
安装
npm install frost-react
基本用法
import { Snowfall } from "frost-react";
export default function App() {
return (
<>
Your app content
</>
);
}
就这么简单。现在你已经拥有降雪效果了。 ❄️
自定义动画
可用属性
| Prop | Description |
|---|---|
enabled | 开启或关闭降雪 |
flakeCount | 雪花数量 |
snowflakeCharacter | 使用的表情或字符 |
speed | 下落速度(范围) |
size | 雪花大小(范围) |
opacity | 透明度(范围) |
wind | 水平漂移(范围) |
color | 雪的颜色 |
zIndex | 层级定位 |
className / style | 自定义样式 |
所有属性均已使用 TypeScript 完全类型化。
兼容性
- Next.js(SSR 安全)
- Remix
- Vite
- Create React App (CRA)
- ESM 与 CommonJS
服务器端不会出现 window 崩溃。没有 hack。
- 完整的 TypeScript 支持和清晰的内部架构
- 用于测试的 Storybook 演练场
- 合理的默认值并提供逃生口
- 零不必要的依赖
- 小巧的库,职责单一
常见使用场景
- 节日着陆页或季节性 UI 装饰
- 营销站点和有趣的仪表盘
- 临时活动(圣诞、元旦、冬季促销)
如果你想要轻量且不臃肿的乐趣——这正合适。
结论
frost-react 的诞生是因为我想要一种外观好看、性能优秀、尊重用户且不与开发者作对的降雪效果。它刻意保持小巧、专注且有主见——以一种好的方式。如果你尝试了它、打破了它、改进了它,或用它构建了有趣的东西——我很期待看到你的作品。
祝编码愉快!
GitHub:
npm:**