Collapsible 设计文档
折叠容器原语:对任意内容做高度折叠/展开过渡,无触发器 UI(aria-expanded 由使用方提供)。是 Collapse 手风琴的底层能力,作为独立原语暴露以支持 keepDOM / lazyRender / collapseHeight 等精细控制。机制镜像 Semi:ResizeObserver 测内容高度 + wrapper 显式 height 过渡,仅过渡进行中挂载 transition class。
← API 文档使用建议
折叠容器原语:对任意内容做高度折叠/展开过渡,无触发器 UI(aria-expanded 由使用方提供)。是 Collapse 手风琴的底层能力,作为独立原语暴露以支持 keepDOM / lazyRender / collapseHeight 等精细控制。机制镜像 Semi:ResizeObserver 测内容高度 + wrapper 显式 height 过渡,仅过渡进行中挂载 transition class。
Accessibility
ARIA role:presentation
- 折叠时 wrapper overflow:hidden 裁剪内容;完全折叠(不 keepDOM 且 collapseHeight===0)后内容 DOM 卸载移出可达性树
- 原语不含触发器:aria-expanded / aria-controls 由使用方(或 Collapse)提供;id 透传至内容元素供 aria-controls 关联
- reduced-motion:motion=true 但用户 prefers-reduced-motion 时移除过渡(即时)
设计变量
| 变量 | 默认值 | 用法 |
|---|---|---|
--cd-transition-delay-collapsible-height | var(--cd-motion-delay-none) | 折叠-高度-延迟时间(组件消费,对齐 Semi $transition_delay-collapsible-height) |
--cd-transition-delay-collapsible-opacity | var(--cd-motion-delay-none) | 折叠-透明度-延迟时间(组件消费,对齐 Semi $transition_delay-collapsible-opacity) |
--cd-transition-duration-collapsible-height | 250ms | 折叠-高度-动画持续时间默认值(可被 duration prop 覆盖,组件消费,对齐 Semi $transition_duration-collapsible-height) |
--cd-transition-duration-collapsible-opacity | 250ms | 折叠-透明度-动画持续时间(组件消费,对齐 Semi $transition_duration-collapsible-opacity) |
--cd-transition-function-collapsible-height | cubic-bezier(0.25, 0.1, 0.25, 1) | 折叠-高度-过渡曲线(组件消费,对齐 Semi $transition_function-collapsible-height) |
--cd-transition-function-collapsible-opacity | var(--cd-motion-ease-in) | 折叠-透明度-过渡曲线(组件消费,对齐 Semi $transition_function-collapsible-opacity) |