WebberUI

Orbiting Circles

沿圓形軌道環繞的圖示/頭像圈,可疊多層軌道、反向與不同轉速。

沿一條圓形軌道等距環繞的圖示或頭像圈。多個實例可疊成內外多層軌道,各自設定半徑、轉速與方向,常用來表現「以核心為中心的技術生態」或整合關係。

載入預覽⋯

Playground

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

100
20
40
0
<OrbitingCircles />

安裝

npx shadcn@latest add https://webberui.com/r/orbiting-circles.json

或在 components.json 設定 registries 後,改用 @webberui/orbiting-circles 安裝。

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

npm install motion clsx tailwind-merge lucide-react

使用

children 會沿圓周等距分佈。疊兩個實例即可做出內外雙軌,用 reverse 讓外圈反向、startAngle 錯開節點。

import { OrbitingCircles } from "@/components/ui/orbiting-circles";

<div className="relative flex h-[360px] items-center justify-center">
  <OrbitingCircles radius={62} duration={16} iconSize={34} className="absolute">
    <Github />
    <Twitter />
    <Figma />
  </OrbitingCircles>

  <OrbitingCircles
    radius={122}
    duration={28}
    iconSize={42}
    reverse
    startAngle={20}
    className="absolute"
  >
    <Chrome />
    <Slack />
    <Cloud />
    <Database />
  </OrbitingCircles>
</div>

Props

Prop型別預設值說明
childrenReact.ReactNode沿軌道環繞的元素,會沿圓周等距分佈
radiusnumber100軌道半徑(px)
durationnumber20繞行一圈的時長(秒),越大越慢
reversebooleanfalse反向(逆時針)環繞
iconSizenumber40單一元素的邊長(px)
startAnglenumber0第一個元素的起始角度(度)
pathbooleantrue顯示淡淡的圓形軌道
classNamestring透傳到最外層容器

可及性

  • 使用者系統開啟「減少動態效果」時,元素直接落在軌道上的靜態位置,不做環繞動畫
  • 軌道路徑以 aria-hidden 標記,僅作裝飾

On this page