跳到主要內容
+

Popup

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。子元素放置在預先添加到文檔 body 的 Portal 中,以避免渲染問題。您可以使用 disablePortal 屬性停用此行為。請參閱下方的「停用 Portal」章節,了解如何操作。

以下範例展示如何建立和設定基本 Popup 的樣式。點擊切換 Popup 以查看其行為

按下 Enter 鍵開始編輯

自訂

放置

Popup 的預設放置位置是 bottom。您可以使用 placement 屬性變更它。請嘗試在下方的互動式範例中將此值變更為 top,以查看其運作方式

放置位置值
錨點

轉場效果

您可以使用 CSS 轉場效果、CSS 動畫或第三方動畫函式庫,為 Popup 的開啟和關閉添加動畫效果。它支援 MUI Base Transitions 頁面上描述的 API。

停用 Portal

若要在原始碼中定義 Popup 的位置渲染它,而無需使用 React Portal,請傳入 disablePortal 屬性。請注意,如果 Popup 放置在沒有可見溢位的容器中,可能會導致視覺剪裁。

不使用 Portal 時,您可以使用固定定位來防止剪裁。Popup 具有 strategy 屬性,該屬性負責決定位置的計算方式。當設定為 "fixed" 時,將使用固定的 CSS 定位,且 Popup 不會受到溢位隱藏的影響。

按下 Enter 鍵開始編輯

Floating UI 中介軟體

如果您需要修改底層的 Floating UI 中介軟體,可以透過 middleware 屬性進行修改。預設情況下,Popup 使用 offset (值由 offset 屬性提供)、flipshift 函式。如果您提供自己的中介軟體陣列,則不會套用這些預設值。