用途:为 8-bit 像素风与游戏化界面优化动画性能,保证像素画渲染与类游戏交互的流畅度。
主要能力:
- 硬件加速:用 CSS transform 做 GPU 加速动画,如 transition-transform hover:scale-110、translate-x-0 translate-y-0。
- 避免动画化会触发布局的属性:width、height、margin、padding、top、left;优先动画化 transform、opacity、filter。
- 像素动画:把动画 SVG 包在 div 中以便硬件加速,例如 animate-spin 外层 div 包裹 viewBox="0 0 16 16" 的 svg。
- 加载态:用 animate-pulse 做复古加载指示,如 RetroSkeleton 中 h-20 bg-muted 的脉冲块。
- 自定义复古动画:用 step-end 时序做像素感闪烁,如 animate-[blink_0.5s_step-end_infinite] 配合 @keyframes blink 在 0%、100% 设 opacity:1、50% 设 opacity:0;并用白色 textShadow 保证彩色背景上的可读性。
- 条件动画:按游戏状态用 cn 组合类名,如 health <= 25 时 animate-pulse bg-red-500/20,isLevelUp 时 animate-bounce。
- Radix UI 状态动画:用 data-[state=open]/data-[state=closed] 控制 DialogContent 的 animate-in/animate-out、fade、zoom,以及 AccordionContent 的 animate-accordion-up/down。
关键原则:SVG 始终包 div;优先 transform 而非 top/left;像素风用 step-end;按状态条件应用类名;自定义关键帧;文字用白色阴影。
性能检查清单:动画元素包在 div 中;不动画化触发布局的属性;加载态用 animate-pulse;条件动画正确门控;自定义动画使用 step 时序函数。
参考组件:components/ui/8bit/spinner.tsx、xp-bar.tsx、skeleton.tsx、accordion.tsx。
限制:资料未提供安装命令、依赖版本、浏览器兼容范围与具体性能指标,暂未提供。