WebberUI

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.jsonfiles[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型別預設值說明
textstring要動畫的文字
by"char" | "word""char"拆分單位
trigger"view" | "auto" | "hover""view"觸發時機:進入視口、掛載即播、或滑鼠移入
gravitynumber2200重力加速度(px/s²),越大掉得越快
bouncenumber0.4落地回彈係數(01),越大彈得越高
staggernumber0.05每個單位起跳的間隔(秒)
fallHeightnumber220起始高度:從靜止位置往上多少 px 掉落
rotatebooleantrue掉落時附帶隨機傾斜,落定後回正
oncebooleantrue只在第一次觸發時播放

可及性

  • 使用者系統開啟「減少動態效果」時,直接渲染靜態文字
  • 完整字串以 sr-only 提供給輔助科技朗讀,拆分後的單位標記 aria-hidden

On this page