Skyroc UI
布局容器

Accordion

可折叠的内容面板,用于在有限空间内展示和隐藏分组信息

手风琴(Accordion)将大段内容分组为可折叠的面板,让用户按需展开感兴趣的部分,适合在有限空间内组织层级信息。

import {
  Accordion,
  AccordionRoot,
  AccordionItem,
  AccordionHeader,
  AccordionTrigger,
  AccordionContent
} from '@skyroc/web-ui';

何时使用

  • 页面信息量较大,需要分组折叠展示时(如 FAQ、设置面板)。
  • 用户只需关注部分内容,无需一次性浏览全部信息。
  • 相比 Tab 组件,Accordion 更适合各分组内容长度差异较大的场景。

单选模式

设置 type="single" 时,同一时间只能展开一个面板。默认展开后不可再折叠(始终保持一个面板打开)。

Preview
Code
Loading...

可折叠

在单选模式下,设置 collapsible 允许用户折叠所有面板(点击已展开的面板可将其收起)。

Preview
Code
Loading...

多选模式

设置 type="multiple" 时,可以同时展开多个面板,彼此互不影响。

Preview
Code
Loading...

尺寸

通过 size 调整手风琴的字号与间距,从 xs2xl 共 6 个尺寸。

尺寸字号触发器间距适用场景
xs10pxpy-3紧凑嵌套、辅助信息
sm12pxpy-3.5侧边栏、次级面板
md14pxpy-4常规场景(默认)
lg16pxpy-4.5强调内容、表单分组
xl18pxpy-5重要信息面板
2xl20pxpy-6首屏 FAQ、大幅展示
Preview
Code
Loading...

插槽

每个条目支持 leadingtrailing 插槽,可在标题前后放置图标、标签或其他内容。插槽通过 items 数据中的 leading / trailing 字段配置。

Preview
Code
Loading...

自定义图标

通过 triggerIcon 替换默认的展开/折叠箭头图标,triggerLeadingtriggerTrailing 可以在所有触发器前后统一添加内容。

Preview
Code
Loading...

自定义样式

通过 classNames 对手风琴的各个 slot(rootitemheadertriggercontenttriggerIcontriggerLeadingIcon)分别自定义样式。

Preview
Code
Loading...

API

Accordion

通用属性参考:基于 Radix UI Accordion,支持原生 div 元素的所有属性。

属性说明类型默认值
type*选择模式,single 同时只展开一个,multiple 可展开多个'single' | 'multiple'-
items*数据驱动的条目列表,每项需包含唯一 valueAccordionItemData[]-
collapsible单选模式下是否允许全部折叠booleanfalse
size尺寸,影响字号与间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
value受控模式下当前展开的面板值string | string[]-
onValueChange展开面板变化时的回调(value: string | string[]) => void-
defaultValue非受控模式下默认展开的面板值string | string[]-
classNames各 slot 的自定义 class(root / item / header / trigger / content / triggerIcon / triggerLeadingIcon)AccordionClassNames-
triggerIcon自定义触发器展开/折叠图标,替换默认箭头ReactNode-
triggerLeading所有触发器的全局前置内容ReactNode-
triggerTrailing所有触发器的全局后置内容ReactNode-
disabled禁用整个手风琴booleanfalse
dir文本方向'ltr' | 'rtl'-

AccordionItemData

每个条目的数据结构,通过 items 数组传入:

属性说明类型默认值
value*条目的唯一标识string-
title*触发器中显示的标题ReactNode-
children*展开后显示的内容ReactNode-
leading标题前的插槽内容(图标、标签等)ReactNode-
trailing标题后的插槽内容(图标、标签等)ReactNode-
disabled是否禁用该条目booleanfalse

类型

AccordionClassNames

各 slot 的自定义 class,用于精细化控制手风琴各部分的样式。

字段类型说明
rootClassValue根容器的 class。
itemClassValue每个条目的 class。
headerClassValue条目头部的 class。
triggerClassValue触发器按钮的 class。
contentClassValue展开内容区域的 class。
triggerIconClassValue触发器图标的 class。
triggerLeadingIconClassValue触发器前置图标的 class。

AccordionItemData

数据驱动模式下每个条目的数据结构。

字段类型说明
value*string条目的唯一标识。
title*ReactNode触发器中显示的标题。
children*ReactNode展开后显示的内容。
leadingReactNode标题前的插槽内容。
trailingReactNode标题后的插槽内容。
disabledboolean是否禁用该条目。

ClassValue

CSS 类名类型

string | null | undefined | Record<string, boolean> | ClassValue[]

On this page