WebberUI

Accordion

帶彈跳過渡的動畫手風琴/FAQ 展開,支援單開與多開。

以 spring 物理模型驅動高度展開,收尾自帶回彈;內容同步做輕微上滑,層次分明。

載入預覽⋯

Playground

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

<Accordion />

安裝

npx shadcn@latest add https://webberui.com/r/accordion.json

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

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

npm install motion lucide-react clsx tailwind-merge

使用

import { Accordion } from "@/components/ui/accordion";

<Accordion
  defaultValue="a"
  items={[
    { value: "a", title: "第一題", content: "第一題的答案。" },
    { value: "b", title: "第二題", content: "第二題的答案。" },
  ]}
/>;

多開模式傳 multipledefaultValue 可給字串陣列:

<Accordion multiple defaultValue={["a", "b"]} items={items} />

Props

Prop型別預設值說明
itemsAccordionItemData[]每一列的資料,含 valuetitlecontent
multiplebooleanfalse允許同時展開多列
defaultValuestring | string[]預設展開的 value
bouncebooleantrue過渡是否附帶彈跳,關閉則用平順淡入
classNamestring透傳到最外層容器

AccordionItemData 欄位:value(唯一識別)、titleReactNode)、contentReactNode)。

可及性

  • trigger 使用原生 button,帶 aria-expandedaria-controls;內容區為 region 並以 aria-labelledby 指回 trigger
  • 開啟系統「減少動態效果」時,退化為短促平順淡入,不做高度彈跳

On this page