WebberUI

Spotlight Background

聚光燈掃射背景,內建掃射光錐、雷達旋轉、靜態舞台光束三款,可跟隨游標追焦。

載入預覽⋯

Playground

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

1
<SpotlightBackground />

安裝

npx shadcn@latest add https://webberui.com/r/spotlight-background.json

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

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

npm install motion clsx tailwind-merge

使用

import { SpotlightBackground } from "@/components/ui/spotlight-background";

<SpotlightBackground
  variant="sweep"
  interactive
  className="flex h-[420px] items-center justify-center"
>
  <h1 className="text-4xl font-bold text-neutral-50">Spotlight on you</h1>
</SpotlightBackground>

前景內容以 children 傳入,會疊在光影之上;容器本身是深色底,淺色文字對比最佳。

款式

  • sweep(預設):三道光錐自上緣支點左右掃射,週期各異形成交錯。
  • radar:兩道對向光楔繞中心旋轉,像雷達或燈塔掃描。
  • beam:一道自左上斜射的靜態舞台光束,配頂部柔光緩緩呼吸。

Props

Prop型別預設值說明
variant"sweep" | "radar" | "beam""sweep"聚光燈款式
colorsstring[]近白 + 靛藍 + 天青燈光色,依序對應各光束
speednumber1動畫速度倍率,>1 更快、<1 更慢
interactivebooleanfalse疊加一團跟隨游標的柔光(僅滑鼠生效)
grainbooleanfalse疊加低透明度噪點,柔化光暈色帶
childrenReactNode疊在光影之上的前景內容
classNamestring附加樣式;佈局、高度、圓角寫在這裡

細節

  • 光束以 mix-blend-screen 疊加,暗底上呈加色發光;容器預設 bg-neutral-900 dark:bg-neutral-950,可用 className 覆蓋。
  • 光錐以 clip-path 收窄成錐形、外層與內層各自旋轉:外層朝游標傾斜、內層跑掃射迴圈,兩組 transform 互不干擾。
  • interactive 的柔光經 spring 追焦,移動帶有慣性;觸控指標不觸發,避免行動裝置誤動作。
  • 邊緣暗角把光聚回中央,grain 進一步壓掉大面積漸層的色帶感。

可及性

  • 使用者系統開啟「減少動態效果」時,光束停在靜止位置、不啟動掃射與旋轉,也不再跟隨游標。
  • 整個光影層帶 aria-hiddenpointer-events-none,只作裝飾,不干擾前景內容的語意與互動。
  • 前景內容的可讀性由你掌控:深色底搭配淺色文字,必要時自行加上文字陰影或半透明底板。

On this page