用途:为浏览器顶层界面提供权威实现参考。三大 API 共享同一心智模型:把元素提升到顶层、相对锚点定位、用离散属性过渡做进出场动画。模态打断用 <dialog>,临时非模态表面用 Popover API。
主要能力:<dialog>(2022-03 起广泛可用)、Popover API(2025-01 起新可用)、@starting-style 与 transition-behavior: allow-discrete(2024-08 起新可用)、锚点定位核心(2024–2026 逐步推出)、position-area 与 position-try-fallbacks(2026-01 起新可用)、overlay 属性(有限支持)。含决策树:showModal 与 popover=auto 的取舍、锚点定位与 JS getBoundingClientRect 的取舍、动画配方选择。
用法要点:模态用 dialog.showModal(),临时表面用 popover="auto" 配合 popovertarget;隐式锚点可直接写 position-area: bottom span-inline-end;。进出场动画需在 transition 中写 display 0.3s allow-discrete 与 overlay 0.3s allow-discrete,并在打开态规则之后声明 @starting-style。锚点定位需用 @supports (anchor-name: --x) 门控并提供 JS 回退。
硬性规则:不要在 <dialog> 上设 tabindex;不要在同一元素混用 popover 与 showModal();不要为 auto/hint popover 自写点击外部处理;锚点定位必须门控;进场动画不可省略 @starting-style;退出动画不可省略 allow-discrete;@starting-style 不可放在目标规则之前;调用 showModal() 前须记录 document.activeElement 并在关闭时恢复;用 <form method="dialog"> 与按钮 value 声明式返回结果。
限制:ARIA 角色与状态、焦点管理机制、模态/Toast/抽屉组件模板、滚动驱动动画与 View Transitions 均不在范围内,另见相关条目。锚点定位跨引擎 Baseline 尚未完全落地。