Modal 设计文档
模态对话框,严格镜像 Semi Design。DOM:.cd-modal-fixed > .cd-modal-mask + .cd-modal-wrap(role=none 滚动/遮罩点击) > .cd-modal(尺寸壳) > .cd-modal-content(role=dialog aria-modal)。API 对齐 Semi 名:visible/closeOnEsc/getPopupContainer/afterClose/motion/okType(5 种)/size(small|medium|large|full-width)/header(Snippet)/footerFill 等。关闭按钮用 IconButton + IconClose(@chenzy-design/icons),标题用 Typography.Title heading=5。受控 visible 不回写,仅 onVisibleChange/onCancel 通知。命令式工厂 Modal.confirm/info/success/warning/error(异步 onOk 自动 loading)+ Modal.destroyAll + Modal.useModal(配合 ModalContextHolder 继承 context)。可拖拽经 modalRender + DragMove(对齐 Semi)。堆叠 z-index 由模块级计数器分配(声明式与命令式共享)。
← API 文档使用建议
模态对话框,严格镜像 Semi Design。DOM:.cd-modal-fixed > .cd-modal-mask + .cd-modal-wrap(role=none 滚动/遮罩点击) > .cd-modal(尺寸壳) > .cd-modal-content(role=dialog aria-modal)。API 对齐 Semi 名:visible/closeOnEsc/getPopupContainer/afterClose/motion/okType(5 种)/size(small|medium|large|full-width)/header(Snippet)/footerFill 等。关闭按钮用 IconButton + IconClose(@chenzy-design/icons),标题用 Typography.Title heading=5。受控 visible 不回写,仅 onVisibleChange/onCancel 通知。命令式工厂 Modal.confirm/info/success/warning/error(异步 onOk 自动 loading)+ Modal.destroyAll + Modal.useModal(配合 ModalContextHolder 继承 context)。可拖拽经 modalRender + DragMove(对齐 Semi)。堆叠 z-index 由模块级计数器分配(声明式与命令式共享)。
Accessibility
- role=dialog + aria-modal=true;有 title 用 aria-labelledby 指向 Typography.Title,无则 aria-label;aria-describedby 指向 body;useFocusTrap 捕获 Tab 并在关闭时归还触发元素;closeOnEsc 控制 Esc;useScrollLock 锁背景滚动;背景 inert;关闭按钮 IconButton 有 aria-label;motion 关闭过渡受 prefers-reduced-motion 抑制。
设计变量
| 变量 | 默认值 | 用法 |
|---|---|---|
--cd-color-modal-bg | var(--cd-color-bg-2) | 模态框背景颜色 |
--cd-color-modal-content-border | var(--cd-color-border) | 模态框描边颜色 |
--cd-color-modal-danger-icon | var(--cd-color-danger) | 模态框危险图标颜色 |
--cd-color-modal-footer-bg | transparent | 模态框 footer 背景填充色 |
--cd-color-modal-footer-border | transparent | 模态框 footer 顶部描边颜色 |
--cd-color-modal-header-bg | transparent | 模态框 header 背景填充色 |
--cd-color-modal-header-border | transparent | 模态框 header 底部描边颜色 |
--cd-color-modal-info-icon | var(--cd-color-info) | 模态框信息图标颜色 |
--cd-color-modal-main-text | var(--cd-color-text-0) | 模态框文字颜色 |
--cd-color-modal-mask-bg | var(--cd-color-overlay-bg) | 模态框蒙层颜色 |