WebberUI

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.jsonfiles[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 dpathD,例如一個圓:pathD="M 320 40 A 90 90 0 1 1 319 40"

Props

Prop型別預設值說明
textstring沿曲線流動的文字
separatorstring" • "每段之間的分隔符,也會一起重複
pathDstring正弦波自訂 SVG path 的 d
widthnumber640viewBox 寬度
heightnumber260viewBox 高度
fontSizenumber34字級(對應 viewBox 座標)
speednumber46自動流動速度(px/秒),負值反向,0 靜止
draggablebooleantrue是否可拖曳撥動(放開帶慣性)
showPathbooleanfalse顯示底層曲線參考線
textClassNamestring套在 <text> 上,控制顏色與字重

可及性

  • SVG 帶 role="img"aria-label,朗讀時是完整文字,重複的視覺複本對輔助科技隱藏
  • 使用者系統開啟「減少動態效果」時停止自動流動,僅保留使用者主動拖曳的操作

On this page