WebberUI

生肖輪盤

十二生肖環形輪盤:旋轉選擇、選中生肖展開年份與特質卡

十二生肖 SVG 環形輪盤:可拖曳或點擊旋轉、放開後以 spring 吸附到扇區,頂部指針所指的生肖會在中央展開資訊卡(近三個年份、五行、性格關鍵詞),也可輸入出生年自動跳轉到對應生肖。

載入預覽⋯

Playground

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

0
300
<ChineseZodiacWheel />

安裝

npx shadcn@latest add https://webberui.com/r/chinese-zodiac-wheel.json

或在 components.json 設定 registries 後,改用 @webberui/chinese-zodiac-wheel 安裝。

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

npm install motion lucide-react clsx tailwind-merge

使用

import { ChineseZodiacWheel } from "@/components/ui/chinese-zodiac-wheel";

// 非受控:預設選中「馬」(索引 6)
<ChineseZodiacWheel
  defaultValue={6}
  onChange={(index, zodiac) => console.log(index, zodiac.name)}
/>

十二生肖資料(地支、五行、性格關鍵詞)與年份換算表皆內建於元件,無需外部請求。年份換算以 2020(庚子鼠年)為基準、REFERENCE_YEAR = 2026 為「近三個年份」的上限,之後要顯示更新的年份只需調整該常數。另外元件也輸出 yearToZodiacIndex(year) 工具函式,可在外部把西元年轉為生肖索引。

注意:生肖實際以農曆正月初一為分界,元件以國曆年近似(示範用途),一、二月出生者請依農曆年修正。

Props

Prop型別預設值說明
valuenumber受控選中生肖索引(0=鼠、1=牛 … 11=豬)
defaultValuenumber0非受控預設索引
onChange(index: number, zodiac: ZodiacInfo) => void選中生肖變更時回呼
sizenumber300輪盤直徑(px)
showYearInputbooleantrue是否顯示出生年查詢輸入框
classNamestring透傳到外層容器

可及性

  • 輪盤為 role="slider" 並可鍵盤聚焦,方向鍵可逐格切換生肖,aria-valuetext 會朗讀當前生肖、地支與五行
  • 使用者系統開啟「減少動態效果」時,停用 spring 旋轉與卡片過場,切換立即完成
  • 扇區 SVG 對輔助科技隱藏(aria-hidden),語意由 slider 屬性完整承載
  • 出生年為標準 input,格式錯誤時設定 aria-invalid 並以 role="alert" 顯示提示

On this page