前言 #
在前端開發中,數字的展示常常扮演關鍵角色,例如儀表板上的統計數據、即時更新的價格資訊,或是排行榜的分數變動。然而,若只是單純以靜態文字呈現,往往難以在視覺上吸引用戶的注意力。這時候,文字動畫(Text Animations) 就成為提升使用體驗的一種有效手段。
Animate UI 提供了多種文字動畫效果,今天來介紹其中兩種 Counting Number 與 Sliding Number。前者能夠透過遞增的動畫,表達數值變化的過程;後者以滑動的形式,讓數字更新更自然且具動態感。
Counting Number #

-
使用 Shadcn CLI 加入 Counting Number
npx shadcn@latest add @animate-ui/primitives-texts-counting-number -
Import 元件並將元件放在想要的位置上
import { CountingNumber } from '@/components/animate-ui/text/counting-number'; <CountingNumber number={1000}/> -
若還有想要微調,可以增加更多參數 (? 表示為選填參數)
參數 參數型態 說明 number number最終要顯示的目標數字,由初始值逐漸變化到這個 number fromNumber? number動畫的起始數字,預設為 0 padStart? boolean是否自動補零,在一些需要對齊的場景(如時鐘、編號、流水號),可設定為 true inView? boolean控制動畫是否要等到元素進入畫面(viewport)時才開始播放,避免一進頁面就全部執行 inViewMargin? UseInViewOptions['margin']設定觸發「進入視窗」判斷的邊界範圍 inViewOnce? boolean是否只在元素首次進入視窗時執行動畫 decimalPlaces? number小數點後位數。像是設定為 3,就會顯示 123.456 decimalSeparator? string遇到小數點時,要使用的分隔符號 transition? SpringOptions控制動畫的過渡效果,有兩個參數( stiffness剛度 : number,damping阻尼 : number)Stiffness 像是彈簧的剛性,數值越高,產生的運動越突然;Damping 像是彈簧的反作用力。如果設定為 0,彈簧將無限振盪。若覺得太抽象,可以至 The Physics Classroom 試玩className string可搭配 Tailwind CSS font-family、font-size、font-weight 等 Typography 使用
Sliding Number #
基本上可以與上個元件共用許多地方的參數,主要是呈現的效果不同,可以依照自己的需求來調整。

-
使用 Shadcn CLI 加入 Sliding Number
npx shadcn@latest add @animate-ui/primitives-texts-sliding-number -
Import 元件並將元件放在想要的位置上
import { SlidingNumber } from '@/components/animate-ui/text/sliding-number'; <SlidingNumber number={12345.67} decimalSeparator="," decimalPlaces={2} padStart className="text-lg" inView /> -
若還有想要微調,可以增加更多參數 (? 表示為選填參數)
參數 參數型態 說明 number number最終要顯示的目標數字,由初始值逐漸變化到這個 number fromNumber? number動畫的起始數字,預設為 0 padStart? boolean是否自動補零,在一些需要對齊的場景(如時鐘、編號、流水號),可設定為 true inView? boolean控制動畫是否要等到元素進入畫面(viewport)時才開始播放,避免一進頁面就全部執行 inViewMargin? UseInViewOptions['margin']設定觸發「進入視窗」判斷的邊界範圍 inViewOnce? boolean是否只在元素首次進入視窗時執行動畫 decimalPlaces? number小數點後位數。像是設定為 3,就會顯示 123.456 decimalSeparator? string遇到小數點時,要使用的分隔符號 transition? SpringOptions控制動畫的過渡效果,有兩個參數( stiffness剛度 : number,damping阻尼 : number,mass質量 : number)Mass 越小,會感覺比較輕盈;其餘參數請參考Counting Number元件的參數說明className string可搭配 Tailwind CSS font-family、font-size、font-weight 等 Typography 使用
小結 #
今天主要練習如何在數字上使用 Animate UI 文字動畫,讓數字不再只是靜態顯示,而是能夠透過逐步變化的方式,帶來更直觀的動態效果。明天我們將要針對 Text 來讓他動起來 (๑•̀ㅂ•́)و✧