輸入框
Input 元件方便使用者輸入文字資料。
簡介
Input 元件透過提供擴充的客製化選項和無障礙功能,增強了原生 HTML <input>
標籤的功能。
<Input />
Playground
尺寸
輸入元件提供三種尺寸:sm
、md
(預設)和 lg
顏色
主題中包含的每個調色盤都可以透過 color
屬性使用。
表單提交
您可以將標準表單屬性(例如 required
和 disabled
)新增至 Input 元件
聚焦環
提供這些 CSS 變數給 sx
屬性以控制聚焦環的外觀
--Input-focusedInset
:聚焦環的位置,在 Input 內部 (inset
) 或外部 (var(--any, )
)。--Input-focusedThickness
:聚焦環的大小。--Input-focusedHighlight
:聚焦環的顏色。
偵錯聚焦環
若要透過模擬使用者焦點來顯示 Input 的聚焦環,請檢查 Input 元素並切換虛擬狀態面板。
- 如果您檢查 Input 的根元素,帶有
.MuiInput-root
類別,則必須開啟:focus-within
狀態。 - 如果您檢查
<input>
元素,您可以切換:focus
或:focus-within
狀態。
觸發聚焦環
若要以程式方式觸發聚焦環,請設定 CSS 變數 --Input-focused: 1
。
標籤和輔助文字
將 Input 與 Form label 和 Form helper text 群組在 Form control 元件中,以建立文字欄位。
驗證
在 Input 或 Form Control 上使用 error
屬性來切換錯誤狀態
裝飾器
startDecorator
和 endDecorator
屬性可用於將支援圖示或元素新增至輸入框。對於輸入框,裝飾器通常位於輸入欄位的頂部和/或底部。
內部 HTML 輸入框
如果您需要將屬性傳遞至內部 HTML <input>
,請使用 slotProps={{ input: { ...props } }}
。這些屬性可能包含 HTML 屬性,例如 ref
、min
、max
和 autocomplete
。
CSS 變數 Playground
試用 Input 元件可用的 CSS 變數,以查看設計如何變化。您可以使用這些變數透過 sx
屬性和主題來客製化元件。
<Input
startDecorator={<MailIcon />}
endDecorator={<Button>Message</Button>}
>
CSS 變數
浮動標籤
若要建立浮動標籤輸入框,需要自訂元件(<input>
和 <label>
的組合)來取代預設的輸入框 slot。
防抖輸入框
第三方格式化
Input 元件可以與第三方格式化函式庫整合,以用於更複雜的使用情境。
建立一個轉接器元件,以從 Input 元件取得屬性,並將它們對應到第三方元件 API。然後使用該轉接器作為 Joy UI Input 的 slotProps.input.component
屬性的值。
以下示範說明如何使用兩個流行的函式庫來執行此操作。
React imask
react-imask 提供 IMaskInput
元件,用於複雜的格式化選項。
React number format
react-number-format 提供 NumericFormat
元件,用於強制執行遵循特定數字或字串模式的文字格式化。
無障礙設計
所有輸入框都應具有描述性標籤連結,以協助使用者瞭解其用途。
Form Control 元件會自動產生唯一的 ID,將 Input 與 Form Label 和 Form Helper Text 元件連結
或者,您可以手動執行此操作,方法是鎖定輸入框 slot — 請參閱內部 HTML 輸入框以瞭解詳細資訊
<label htmlFor="unique-id">Label</label>
<Input
slotProps={{
input: {
id: 'unique-id',
}
}}
/>
結構
Input 元件由根 <div>
組成,其中巢狀包含 <input>
<div class="MuiInput-root">
<input class="MuiInput-input" />
</div>
無樣式
使用Base UI Input 完全掌控元件的設計,而無需覆寫 Material UI 或 Joy UI 樣式。此元件的無樣式版本是高度客製化的理想選擇,且套件大小更小。