WebberUI

Animated Stats

進入視口時數字從 0 計數到目標值的統計數字組,項目 stagger 淡入上移。

載入預覽⋯

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

24000
1.6
0.15
0
<AnimatedStats />

安裝

npx shadcn@latest add https://webberui.com/r/animated-stats.json

或在 components.json 設定 registries 後,改用 @webberui/animated-stats 安裝。

安裝依賴後,複製 animated-stats.tsx 到你的 components/ui/ 目錄:

npm install motion clsx tailwind-merge

使用

import { AnimatedStats, StatItem } from "@/components/ui/animated-stats";

<AnimatedStats>
  <StatItem value={120} suffix="+" label="元件" />
  <StatItem value={98} suffix="%" label="滿意度" />
  <StatItem value={3.2} suffix="s" decimals={1} label="平均安裝時間" />
</AnimatedStats>

Props

AnimatedStats

Prop型別預設值說明
childrenReact.ReactNode統計項目(放入 StatItem
delaynumber0進場前延遲(秒)
staggernumber0.15每個項目的 stagger 間隔(秒)
oncebooleantrue只在第一次進入視口時播放

StatItem

Prop型別預設值說明
valuenumber目標數值,從 0 計數到此值
labelstring數字下方的說明文字
prefixstring""數字前綴(例如 $
suffixstring""數字後綴(例如 +%
decimalsnumber0小數位數
durationnumber1.6計數動畫時長(秒)

可及性

  • 使用者系統開啟「減少動態效果」時,跳過計數與 stagger,直接顯示最終數字
  • 數字容器帶 aria-label(最終格式化值,含前後綴),計數中的動畫 span 對輔助科技隱藏(aria-hidden),螢幕閱讀器只會朗讀最終值

On this page