跳到内容
+

弹出框

Popup 组件是一个实用程序,可让您在工具提示和弹出框中显示内容。

简介

Popup 是一个用于创建各种弹出框的实用组件。它依赖于第三方的 Floating UI 库进行定位。

组件

import { Unstable_Popup as Popup } from '@mui/base/Unstable_Popup';

默认情况下,当 Popup 的 open 属性设置为 true 时,它会被挂载到 DOM 中,当 openfalse 时,它会从 DOM 中移除。

anchor 作为参考元素传递给 Floating UI 的 useFloating hook。子元素被放置在 Portal 中,并预先添加到文档的 body 中,以避免渲染问题。您可以使用 disablePortal 属性禁用此行为。请参阅下面的 禁用 Portal 部分,了解其具体做法。

以下演示展示了如何创建和样式化一个基本的 Popup。点击 切换弹出框 以查看其行为

Enter 开始编辑

自定义

位置

Popup 的默认位置是 bottom。您可以使用 placement 属性更改它。尝试在下面的交互式演示中将此值更改为 top,以查看其工作原理

位置值
锚点

过渡效果

您可以使用 CSS 过渡、CSS 动画或第三方动画库来为 Popup 的打开和关闭添加动画效果。它支持 MUI Base 过渡效果 页面上描述的 API。

禁用 Portal

要在源代码中定义 Popup 的位置渲染它,而不使用 React portal,请传入 disablePortal 属性。请注意,如果 Popup 放置在没有可见 overflow 的容器中,则可能会导致视觉剪切。

您可以使用固定定位来防止在不使用 portal 时发生剪切。Popup 具有 strategy 属性,该属性负责确定如何计算位置。当设置为 "fixed" 时,将使用固定的 CSS 位置,并且 Popup 不会受到 overflow 隐藏的影响。

Enter 开始编辑

Floating UI 中间件

如果您需要修改底层的 Floating UI 中间件,您可以通过 middleware 属性进行修改。默认情况下,Popup 使用 offset(使用 offset 属性中提供的值)、flipshift 函数。如果您提供自己的中间件数组,则不会应用这些默认值。