跳至正文

Popup

锚定于触发器的弹出层。

浏览器
Chrome 114+Firefox 125+Safari 17+
层级
0
压缩后大小
883 B
强制布局预算
0 ms
axe 预算
0
支持 SSR
是
基于
elements/popover
公开契约
测试环境

交互示例

Popup

Preferences

Invite teammate

Manual dismissal

API

PopupTrigger

属性类型默认值说明
target*string—此按钮切换的PopupContent id;无须水合,浏览器即可处理切换、点击外部关闭和Escape。
childrenReactNode—触发器按钮的内容。
asTAs & NativeButtonAs<TAs>"button"将props和ref转发给原生按钮的组件;拒绝其他标签,因为调用命令需要真实按钮。

PopupContent

属性类型默认值说明
id*string—使用方提供的唯一id,由触发器和Close引用。
side"top" | "right" | "bottom" | "left""bottom"面板锚定于触发器的哪一侧。
align"start" | "center" | "end""center"面板沿所选侧边的对齐方式。
mode"auto" | "manual""auto"弹出层行为:"auto"在点击外部和按Escape时关闭,"manual"保持打开,直到调用关闭命令将其隐藏。
childrenReactNode—弹出层容器的内容。

PopupClose

属性类型默认值说明
target*string—此按钮隐藏的PopupContent id。
childrenReactNode—关闭按钮的内容。
asTAs & NativeButtonAs<TAs>"button"将props和ref转发给原生按钮的组件;拒绝其他标签,因为调用命令需要真实按钮。

Popup.Root (legacy compound)

属性类型默认值说明
id*string—弹出层容器和调用命令使用的稳定id,注入直接的Trigger、Content和Close子元素。
mode"auto" | "manual" | "hint""auto"传递给Content容器的弹出层行为。
classNamestring—应用于外层元素的类名。
childrenReactNode—Trigger、Content和Close组成部分。

Popup.Trigger (legacy compound)

属性类型默认值说明
classNamestring—应用于触发器按钮的类名。
childrenReactNode—触发器按钮的内容。

Popup.Content (legacy compound)

属性类型默认值说明
side"top" | "right" | "bottom" | "left""bottom"面板锚定于触发器的哪一侧。
align"start" | "center" | "end""center"面板沿所选侧边的对齐方式。
classNamestring—应用于弹出层容器的类名。
childrenReactNode—弹出层容器的内容。

Popup.Close (legacy compound)

属性类型默认值说明
classNamestring—应用于关闭按钮的类名。
childrenReactNode—关闭按钮的内容。

键盘

按键操作
Escape关闭
Tab打开时移入弹出内容

无障碍

原生Popover API:带popovertarget的调用按钮可在任何JavaScript运行前切换弹出层;浏览器管理点击外部关闭、Escape和嵌套,并将弹出层锚定于打开它的调用按钮。

样式钩子

data-sidedata-aligndata-positioningdata-uiify-popupdata-part="trigger|content|close"--uiify-trigger-open (inside [data-uiify-popup][data-part="root"])