Curved Text Loop
文字沿自訂曲線無縫流動,可用指標拖曳撥動並帶慣性。
文字沿著一條 SVG 曲線持續流動,複本會自動鋪滿整條路徑形成無縫循環,並可用指標拖曳手動撥動、放開後帶著慣性繼續滑行。
載入預覽⋯
Playground
即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。
46
34
<CurvedTextLoop />
安裝
npx shadcn@latest add https://webberui.com/r/curved-text-loop.json或在 components.json 設定 registries 後,改用 @webberui/curved-text-loop 安裝。
安裝依賴後,從 registry JSON(/r/curved-text-loop.json 的 files[0].content)複製 curved-text-loop.tsx 原始碼到你的 components/ui/ 目錄:
npm install motion clsx tailwind-merge使用
import { CurvedTextLoop } from "@/components/ui/curved-text-loop";
<CurvedTextLoop text="DESIGN IN MOTION" separator=" ✦ " speed={44} />顏色由外層的文字色(currentColor)決定,字體大小用 fontSize(對應 viewBox 座標)。要換一條曲線,傳入自訂的 SVG path d 到 pathD,例如一個圓:pathD="M 320 40 A 90 90 0 1 1 319 40"。
Props
| Prop | 型別 | 預設值 | 說明 |
|---|---|---|---|
text | string | — | 沿曲線流動的文字 |
separator | string | " • " | 每段之間的分隔符,也會一起重複 |
pathD | string | 正弦波 | 自訂 SVG path 的 d |
width | number | 640 | viewBox 寬度 |
height | number | 260 | viewBox 高度 |
fontSize | number | 34 | 字級(對應 viewBox 座標) |
speed | number | 46 | 自動流動速度(px/秒),負值反向,0 靜止 |
draggable | boolean | true | 是否可拖曳撥動(放開帶慣性) |
showPath | boolean | false | 顯示底層曲線參考線 |
textClassName | string | — | 套在 <text> 上,控制顏色與字重 |
可及性
- SVG 帶
role="img"與aria-label,朗讀時是完整文字,重複的視覺複本對輔助科技隱藏 - 使用者系統開啟「減少動態效果」時停止自動流動,僅保留使用者主動拖曳的操作