WebberUI

彈性繩分隔線

可撥彈的橡皮筋分隔線,拉起放開會彈跳波動。

像一條繃緊的橡皮筋橫在區段之間:滑鼠靠近會自動吸附、拉成 V 形跟隨指標,放開(或拉超過極限脫手)後以阻尼彈簧震盪回位,帶著放開瞬間的慣性。物理以自寫的 rAF 阻尼彈簧驅動 quadratic bezier 控制點,靜止收斂後迴圈自動停止。

載入預覽⋯

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

2
0
110
28
<ElasticRopeDivider />

安裝

npx shadcn@latest add https://webberui.com/r/elastic-rope-divider.json

或在 components.json 設定 registries 後,改用 @webberui/elastic-rope-divider 安裝。

安裝依賴後,從 registry JSON(/r/elastic-rope-divider.jsonfiles[0].content)複製 elastic-rope-divider.tsx 原始碼到你的 components/ui/ 目錄:

npm install motion clsx tailwind-merge

使用

import { ElasticRopeDivider } from "@/components/ui/elastic-rope-divider";

<section>上一段內容</section>
<ElasticRopeDivider className="text-neutral-300 dark:text-neutral-700" />
<section>下一段內容</section>

{/* 客製:粗一點的彩色繩,帶自然下垂 */}
<ElasticRopeDivider color="#f43f5e" thickness={3} sag={12} />

Props

Prop型別預設值說明
colorstring"currentColor"繩子顏色,預設繼承文字顏色,可用外層 text-* 類別控制
thicknessnumber2線條粗細(px)
sagnumber0靜止時的自然下垂量(px),0 為完全直線
heightnumber64互動熱區高度(px),繩子垂直置中於其中
maxStretchnumber110拉伸極限(px),拉超過時繩子會脫手彈回
grabRadiusnumber28指標靠近繩子多少 px 內會吸附跟隨
classNamestring透傳到外層容器

可及性

  • role="separator"aria-orientation="horizontal" 標示,輔助科技視為一般水平分隔線
  • SVG 本體標記 aria-hidden,撥彈互動純屬裝飾,不承載任何內容或操作
  • 使用者系統開啟「減少動態效果」時,停用吸附、拖曳與彈跳,僅渲染靜態繩線
  • 元件不可聚焦、不攔截 Tab 順序,鍵盤導覽完全不受影響

On this page