警报对话框
警报对话框要求用户在高风险或不可逆操作前做出明确选择;只有缺少响应就无法安全继续时才使用。
用法
引入 CSS
导入 Tailwind 和一个完整的 A3S UI 样式包。
或者仅导入基础 CSS、对话框组件 CSS 和一个样式包。
警报对话框复用对话框组件 CSS,不需要额外样式文件。
使用 CDN 或包管理器集成时,请参见安装页。
添加警报对话框 HTML
警报对话框使用原生 <dialog class="alert-dialog">。当用户必须明确选择才能安全继续时,不提供右上角关闭按钮,也不允许点击背景关闭。
HTML 结构
<button type="button" onclick="dialog.showModal()">可选- 触发按钮。使用原生
HTMLDialogElement.showModal()打开模态对话框。 <dialog class="alert-dialog" id="{ DIALOG_ID }">原生模态对话框。存在标题和说明时,分别通过
aria-labelledby与aria-describedby建立关系;紧凑布局使用data-size="sm"。<div>对话框内容表面。
<header>警报对话框标题区。
<figure>可选- 用于解释风险类型的图标或图片,不能替代标题。
<h2 id="{ TITLE_ID }">- 警报标题,由
aria-labelledby引用。 <p id="{ DESCRIPTION_ID }">可选- 结果与恢复说明,由
aria-describedby引用。
<footer>- 操作区。至少提供安全退出操作和明确命名的确认操作。
JavaScript API
警报对话框保留原生 HTMLDialogElement 契约。React 与 Vue 的 useAlertDialog 可调用 showModal() 和 close(returnValue);cancel 与 close 仍是原生 DOM 事件。
状态与变体
基本
基础警报必须说明继续操作的具体后果,并提供安全退出路径。
媒体
只有当图标能帮助识别风险类型时,才在标题区使用 <figure>;图标不应成为装饰。
破坏性
当警报对话框确认破坏性操作时,使用破坏性操作按钮。
小
使用 data-size="sm" 处理文案短、选择明确的阻塞操作。复杂影响或需要补充输入的任务不应塞进紧凑对话框。
RTL
警报对话框支持文档方向。在对话框或父元素上设置 dir="rtl"。
可访问性
标题必须准确命名决策,说明必须写明继续操作的影响以及是否可恢复,并通过 aria-labelledby、aria-describedby 与对话框关联。打开后把焦点放在最安全、最可预测的操作上;关闭后归还给原触发器。保留原生 Escape 与焦点约束,但当缺少明确选择就无法安全继续时,应拦截 cancel,且不能允许背景点击关闭。确认按钮使用动词和对象命名,不能只写“继续”。
