Collapsible 折叠面板
展开或折叠内容的容器
何时使用
- 需要展开或收起内容、节省空间时。
导入
支持两种使用方式:配置式(Collapsible 自定义动画)和复合式(CollapsibleRoot + CollapsibleTrigger + CollapsibleContent,基于 reka-ui 无障碍支持)。
基础用法
通过 isOpen 控制内容的展开或折叠。
复合式(CollapsibleRoot)
基于 reka-ui 无头组件,内置 ARIA 无障碍支持和键盘导航,通过 CSS 动画控制展开/折叠。
自定义动画时间
通过 duration 设置动画时间(毫秒)。
关闭动画
通过 motion 为 false 关闭动画。
自定义折叠高度
通过 collapseHeight 设置收起时的高度。
淡入淡出
通过 fade 开启内容淡入淡出效果。
嵌套使用
保留 DOM 与延迟渲染
通过 keepDOM 保留隐藏的 DOM 树(默认销毁)。配合 lazyRender 为 true 时挂载时不渲染。
重新计算高度
通过 reCalcKey 在内容变化时重新计算高度。
API
Collapsible Props(配置式)
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| isOpen | 是否展开 | boolean | false |
| duration | 动画时间(毫秒) | number | 250 |
| motion | 是否开启动画 | boolean | true |
| collapseHeight | 折叠高度 | number | 0 |
| collapseHeightAdaptive | 内容高度小于 collapseHeight 时自适应 | boolean | false |
| fade | 是否开启淡入淡出 | boolean | false |
| keepDOM | 是否保留隐藏的 DOM | boolean | false |
| lazyRender | 配合 keepDOM,挂载时不渲染 | boolean | false |
| reCalcKey | 改变时重新计算高度 | string | number | - |
| id | 元素 id | string | - |
| class | 附加类名 | string | - |
| style | 附加样式 | CSSProperties | - |
Collapsible Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
| motionEnd | 动画结束回调 | () |
Collapsible Slots
| 名称 | 说明 |
|---|---|
| default | 折叠内容 |
CollapsibleRoot Props(复合式)
基于 reka-ui CollapsibleRoot,接受以下 props:
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| defaultOpen | 默认是否展开 | boolean | false |
| open | 受控展开状态(v-model) | boolean | - |
| disabled | 是否禁用 | boolean | false |
| dir | 方向 | ltr | rtl | ltr |
CollapsibleRoot Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
| update:open | 展开状态变化 | (open: boolean) |
CollapsibleRoot Slots
| 名称 | 说明 | 参数 |
|---|---|---|
| default | 内容 | { state: open | closed } |
CollapsibleTrigger Props(复合式)
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| asChild | 是否将 props 合并到子元素 | boolean | false |
| as | 渲染的元素 | string | Component | button |
CollapsibleContent Props(复合式)
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| forceMount | 是否强制挂载 | boolean | false |
| asChild | 是否将 props 合并到子元素 | boolean | false |
| as | 渲染的元素 | string | Component | div |
两种模式对比
| 维度 | Collapsible(配置式) | CollapsibleRoot(复合式) |
|---|---|---|
| 动画 | JS 高度动画 | CSS 动画(data-state) |
| 无障碍 | 需手动配置 ARIA | reka-ui 内置 ARIA + 键盘导航 |
| 功能 | 丰富(duration/fade/collapseHeight/lazyRender 等) | 基础(open/close) |
| 适用场景 | 需要精细控制动画 | 需要无障碍 + 简单折叠 |
