用于显示锚定到触发元素的上下文内容的弹出框组件。
显示锚定到触发元素的上下文内容。默认情况下,点击打开,点击外部、按下 Escape 或触发器失去焦点时关闭。
设置 openOnHover 可在指针悬停时打开而非点击。使用 delay 和 closeDelay 控制悬停交互的时序。
side 和 align 属性控制弹出框相对于触发器的位置。弹出框会自动重新定位以保持在视口边界内。
在 React 中,组件由四个部分组成:Root 管理状态,Trigger 切换弹出框,Popup 包含内容,Arrow 渲染方向箭头。
使用 CSS 自定义属性设置定位偏移:
根据打开状态和过渡阶段设置样式:
触发器接收反映打开状态的 aria-expanded。当设置 modal 时,弹出框接收 aria-modal="true"。默认启用通过 Escape 关闭,可通过 closeOnEscape={false} 禁用。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
align | "start" | "center" | "end" | "center" | 弹出框相对于触发器的对齐方式 |
closeDelay | number | 0 | 关闭延迟(毫秒) |
closeOnEscape | boolean | true | 是否在按下 Escape 时关闭 |
closeOnOutsideClick | boolean | true | 是否在点击外部时关闭 |
defaultOpen | boolean | false | 初始是否打开 |
delay | number | 0 | 打开延迟(毫秒) |
modal | boolean | false | 是否为模态弹出框 |
open | boolean | - | 受控的打开状态 |
openOnHover | boolean | false | 是否在悬停时打开 |
side | "top" | "right" | "bottom" | "left" | "bottom" | 弹出框相对于触发器的位置 |
| 状态 | 类型 | 描述 |
|---|---|---|
open | boolean | 弹出框是否打开 |
| 属性 | 值 | 描述 |
|---|---|---|
data-open | - | 弹出框打开时存在 |
data-side | "top" | "right" | "bottom" | "left" | 弹出框当前所在的一侧 |
data-align | "start" | "center" | "end" | 弹出框的对齐方式 |
data-starting-style | - | 打开动画开始时存在 |
data-ending-style | - | 关闭动画开始时存在 |
| 属性 | 描述 |
|---|---|
--media-popover-side-offset | 弹出框与触发器之间的侧边偏移 |
--media-popover-align-offset | 弹出框与触发器之间的对齐偏移 |