Falling Text
字元帶重力掉落並彈跳落定的文字動畫,可調重力、回彈與觸發時機。
每個字元從上方落下,撞到基線後依回彈係數彈跳,能量耗盡便靜止歸位——純物理模擬,逐幀直接改 transform,不觸發 React 重繪。
載入預覽⋯
Playground
即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。
2200
0.4
0.05
220
<FallingText />
安裝
npx shadcn@latest add https://webberui.com/r/falling-text.json或在 components.json 設定 registries 後,改用 @webberui/falling-text 安裝。
安裝依賴後,從 registry JSON(/r/falling-text.json 的 files[0].content)複製 falling-text.tsx 原始碼到你的 components/ui/ 目錄:
npm install motion clsx tailwind-merge使用
import { FallingText } from "@/components/ui/falling-text";
<FallingText text="Gravity wins." className="text-5xl font-bold" />因為字元落定前會停在靜止位置的正上方,請把它放進有足夠高度且 overflow-hidden 的有界容器(例如 h-[320px]),才不會掉出畫面。
Props
| Prop | 型別 | 預設值 | 說明 |
|---|---|---|---|
text | string | — | 要動畫的文字 |
by | "char" | "word" | "char" | 拆分單位 |
trigger | "view" | "auto" | "hover" | "view" | 觸發時機:進入視口、掛載即播、或滑鼠移入 |
gravity | number | 2200 | 重力加速度(px/s²),越大掉得越快 |
bounce | number | 0.4 | 落地回彈係數(0–1),越大彈得越高 |
stagger | number | 0.05 | 每個單位起跳的間隔(秒) |
fallHeight | number | 220 | 起始高度:從靜止位置往上多少 px 掉落 |
rotate | boolean | true | 掉落時附帶隨機傾斜,落定後回正 |
once | boolean | true | 只在第一次觸發時播放 |
可及性
- 使用者系統開啟「減少動態效果」時,直接渲染靜態文字
- 完整字串以
sr-only提供給輔助科技朗讀,拆分後的單位標記aria-hidden