Split Flap Board
Vestaboard 式機械分裂翻牌字元切換,逐格滾動落定,支援多則訊息輪播。
機場/車站看板的機械翻牌效果。每格從當前字元沿字元表一格一格向前翻,翻牌數不同讓各格錯落停定,形成經典的機械揭示波紋。
載入預覽⋯
Playground
即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。
46
70
45
<SplitFlapBoard />
安裝
npx shadcn@latest add https://webberui.com/r/split-flap-board.json或在 components.json 設定 registries 後,改用 @webberui/split-flap-board 安裝。
安裝依賴後,從 registry JSON(/r/split-flap-board.json 的 files[0].content)複製 split-flap-board.tsx 原始碼到你的 components/ui/ 目錄:
npm install motion clsx tailwind-merge使用
import { SplitFlapBoard } from "@/components/ui/split-flap-board";
<SplitFlapBoard text="ON TIME" />多則訊息會依 interval 自動輪播:
<SplitFlapBoard
messages={["DEPARTURES", "NOW BOARDING", "GATE A12"]}
interval={2600}
cols={12}
/>以 \n 換行可排出多列看板,並用 background 與 color 換配色。
Props
| Prop | 型別 | 預設值 | 說明 |
|---|---|---|---|
text | string | "" | 顯示文字,支援以 \n 換行;提供 messages 時忽略 |
messages | string[] | — | 依序循環輪播的多則訊息 |
interval | number | 2800 | 輪播間隔(毫秒),僅在 messages 多於一則時生效 |
cols | number | 最長行 | 固定欄數;未提供時取所有訊息中最長一行 |
align | "left" | "center" | "center" | 每行在欄內的對齊方式 |
flipDuration | number | 70 | 單次翻牌時長(毫秒),越小翻得越快 |
stagger | number | 45 | 每往右一欄追加的起翻延遲(毫秒) |
size | number | 46 | 單格高度(像素),寬度與字級依此推算 |
charset | string | 字母數字符號 | 可翻到的字元表,首格須為空白 |
background | string | "#161616" | 翻牌底色 |
color | string | "#f5f5f4" | 字元顏色 |
可及性
- 使用者系統開啟「減少動態效果」時,翻牌動畫關閉,直接顯示最終字元
- 看板帶
role="img"與aria-label(完整訊息文字),個別翻牌格對輔助科技隱藏(aria-hidden) - 字元表以偽隨機起翻延遲驅動波紋,取值由座標決定,避免 SSR 與客端 hydration 不一致