WebberUI

Target Cursor

四角準星游標鎖定並框住目標元素,閒置時自轉,命中目標時張開框住邊界。

四角準星游標。閒置時是一個緩慢自轉的小方框跟隨滑鼠,游標落在命中 targetSelector 的元素上時,四個角括號會平滑張開框住該元素的邊界。

載入預覽⋯

Playground

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

26
12
2
6
6
<TargetCursor />

安裝

npx shadcn@latest add https://webberui.com/r/target-cursor.json

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

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

npm install motion clsx tailwind-merge

使用

TargetCursor 包住一塊區域,並在要被鎖定的元素上加 data-target 屬性(可用 targetSelector 自訂)。

import { TargetCursor } from "@/components/ui/target-cursor";

<TargetCursor className="relative h-[320px] w-full rounded-xl border">
  <button data-target>Launch</button>
  <a data-target href="#">Docs</a>
</TargetCursor>

命中判定用 element.closest(targetSelector),因此目標的任意子元素被指到時也會鎖定整個目標。

Props

Prop型別預設值說明
targetSelectorstring"[data-target]"要鎖定的目標 CSS 選擇器
colorstring"currentColor"準星顏色,隨容器文字色
spinSizenumber26閒置時準星方框邊長(px)
cornerLengthnumber12角括號臂長(px)
cornerThicknessnumber2角括號線寬(px)
paddingnumber6鎖定時外框相對目標外擴的留白(px)
spinDurationnumber6閒置自轉一圈的秒數
dotSizenumber5中心點直徑(px)
classNamestring容器樣式,界定準星作用範圍與高度

可及性

  • 使用者系統開啟「減少動態效果」時,直接渲染原生游標與內容,不套用自訂準星
  • 準星層為 aria-hidden 純裝飾;粗指標裝置(觸控)自動還原原生游標
  • 顏色預設 currentColor,深淺主題下自動維持對比

On this page