按鈕
按鈕讓使用者能夠透過單次點擊執行動作和做出選擇。
按鈕傳達使用者可以採取的動作。它們通常放置在 UI 各處,例如:
- 模組化視窗
- 表單
- 卡片
- 工具列
基本按鈕
Button
元件提供三種變體:文字 (預設)、已包含和已外框。
您可以使用 disableElevation
屬性移除 elevation。
處理點擊
所有元件都接受 onClick
處理函式,該函式會套用至根 DOM 元素。
<Button
onClick={() => {
alert('clicked');
}}
>
Click me
</Button>
請注意,文件 避免 在元件的 API 章節中提及原生屬性 (有很多)。
顏色
具有圖示和標籤的按鈕
有時您可能會想要為某些按鈕新增圖示,以增強應用程式的 UX,因為我們比純文字更容易識別標誌。例如,如果您有一個刪除按鈕,您可以使用垃圾桶圖示標記它。
尺寸
若要使用較大或較小的圖示按鈕,請使用 size
屬性。
顏色
使用 color
屬性將主題色彩調色盤套用至元件。
載入中
從 v6.4.0 開始,使用 loading
屬性將圖示按鈕設定為載入狀態並停用互動。
檔案上傳
若要建立檔案上傳按鈕,請使用 component="label"
將按鈕轉換為標籤,然後建立一個視覺上隱藏的輸入,類型為 file
。
載入中
從 v6.4.0 開始,使用 loading
屬性將按鈕設定為載入狀態並停用互動。
切換載入開關以查看不同狀態之間的轉換。
自訂
這裡有一些自訂元件的範例。您可以在覆寫文件頁面中了解更多相關資訊。
🎨 如果您正在尋找靈感,可以查看 MUI Treasury 的自訂範例。
複雜按鈕
文字按鈕、已包含按鈕、浮動操作按鈕和圖示按鈕都建立在相同的元件之上:ButtonBase
。您可以利用這個較低層級的元件來建立自訂互動。
第三方路由函式庫
一個常見的使用案例是在僅限於用戶端執行導航,而無需 HTTP 往返伺服器。ButtonBase
元件提供 component
屬性來處理此使用案例。這裡有 更詳細的指南。
限制
不允許的游標
ButtonBase 元件在已停用的按鈕上設定 pointer-events: none;
,這會阻止顯示已停用的游標。
如果您希望使用 not-allowed
,您有兩個選項
- 僅限 CSS。您可以移除
<button>
元素停用狀態的 pointer-events 樣式。
.MuiButtonBase-root:disabled {
cursor: not-allowed;
pointer-events: auto;
}
然而
- 當您需要在已停用的元素上顯示工具提示時,您應該加回
pointer-events: none;
。 - 如果您呈現的不是按鈕元素,例如連結
<a>
元素,則游標不會變更。
- DOM 變更。您可以包裝按鈕
<span style={{ cursor: 'not-allowed' }}>
<Button component={Link} disabled>
disabled
</Button>
</span>
這具有支援任何元素的優勢,例如連結 <a>
元素。
無樣式
使用 Base UI Button 完全掌控元件的設計,無需覆寫 Material UI 或 Joy UI 樣式。此元件的無樣式版本是需要大量自訂且套件大小較小的理想選擇。