Collapse

折叠面板,可展开或折叠展示内容区域。用 <Collapse.Panel itemKey header> 声明面板,支持受控 activeKey、accordion 手风琴、clickHeaderToExpand、自定义 expandIcon/collapseIcon、keepDOM/lazyRender、展开动画。DOM/API/tokens 对齐 Semi。

设计文档

如何引入

import { Collapse, Collapse.Panel } from '@chenzy-design/svelte';

基本用法

同时展开多个面板,可通过 defaultActiveKey 设置默认展开项。

手风琴效果

设置 accordion 后每次只允许展开一个面板,常用于 FAQ 场景。

This is panel header 1

Hi, bytedance dance dance. This is the docsite of chenzy-design.

禁用面板

通过 disabled 禁用面板,禁用项不可展开/收起。

隐藏展开/收起图标

通过 showArrow={false} 隐藏单个面板的展开/收起箭头。

自定义展开图标

通过 expandIcon(收起态)与 collapseIcon(展开态)自定义两个图标。

右上角辅助内容

通过 extra 设置右上角辅助内容,仅在 header 为字符串时生效。

箭头位置

通过 expandIconPosition 将展开箭头放到左侧(默认右侧)。

This is panel header 1

Hi, bytedance dance dance. This is the docsite of chenzy-design.

仅点击箭头展开

clickHeaderToExpand={false} 时 Header 不再是热区,仅点击箭头才切换,便于在 Header 内放置交互元素。

API 参考

Collapse

Props

属性说明类型默认值
accordion手风琴模式,每次只允许展开一个面板booleanfalse
activeKey受控属性,当前展开的面板 key(仅 onChange 不回写)string|string[]undefined
class样式类名stringundefined
clickHeaderToExpand点击 Header 展开收起,否则只响应点击箭头booleantrue
collapseIcon自定义折叠图标(展开态显示)SnippetIconChevronUp
defaultActiveKey初始化选中面板的 keystring|string[]undefined
expandIcon自定义展开图标(收起态显示)SnippetIconChevronDown
expandIconPosition展开图标位置'left'|'right'right
keepDOM是否保留隐藏的面板 DOM 树,默认销毁booleanfalse
lazyRender配合 keepDOM,为 true 时挂载时不渲染内容booleanfalse
motion是否开启动画booleantrue
style内联 CSS 样式stringundefined
onChange切换面板的回调(activeKey: string[], event: MouseEvent) => voidundefined
children内嵌 <Collapse.Panel> 列表Snippetundefined

Collapse.Panel

单面板,经 Object.assign(Collapse, { Panel }) 导出,父子状态用 context 传递(同 Timeline.Item / Form.Field 复合模式)。DOM 对齐 Semi collapse/item:header role=button,content 用 Collapsible 原语折叠。

Props

属性说明类型默认值
itemKey必填且唯一,匹配 activeKey / defaultActiveKeystring(required)
header面板头文本(string 时渲染 header-right + extra)stringundefined
head面板头富内容插槽(ReactNode 语义,优先于 header)Snippetundefined
extra右上角辅助内容(仅 header 为 string 且未用 head 时生效)Snippet|stringundefined
disabled面板是否被禁用booleanfalse
showArrow是否展示箭头booleantrue
reCalcKeyreCalcKey 改变时重算内容高度(动态内容用)number|stringundefined
onMotionEnd动画结束回调() => voidundefined
children面板内容Snippetundefined

Accessibility

ARIA rolebutton
键盘交互TabEnterSpace
  • 面板 header 为 role=button,aria-expanded 标记展开态
  • header aria-owns 指向内容区,内容区 aria-hidden 随展开态切换
  • header aria-disabled 与 disabled 属性同步
  • 箭头图标 aria-hidden=true

设计变量

变量默认值用法
--cd-color-collapse-content-text-default var(--cd-color-text-1)内容文字颜色
--cd-color-collapse-header-bg-active var(--cd-color-fill-1)菜单项背景颜色 - 按下
--cd-color-collapse-header-bg-hover var(--cd-color-fill-0)菜单项背景颜色 - 悬浮
--cd-color-collapse-header-icon-default var(--cd-color-text-2)展开箭头图标颜色
--cd-color-collapse-header-text-default var(--cd-color-text-0)标题文字颜色
--cd-color-collapse-header-text-disabled var(--cd-color-disabled-text)标题文字颜色 禁用
--cd-color-collapse-item-border-default var(--cd-color-border)分割线颜色