Radio
單選按鈕讓使用者從一組選項中選擇一個選項。
<Radio />
Playground
基本用法
import Radio from '@mui/joy/Radio';
Joy UI 單選按鈕的行為與原生 HTML <input type="radio">
類似,因此它接受諸如 checked
、value
和 onChange
之類的屬性。
尺寸
Radio 元件有三種尺寸:sm
、md
(預設)和 lg
顏色
主題中包含的每個調色盤都可透過 color
屬性使用。
標籤
使用 label
屬性為單選按鈕新增標籤。
對於更複雜的佈局,將單選按鈕與 Form Control、Form Label 和 Form Helper Text(可選)組合在一起,如下所示
位置
要交換單選按鈕及其標籤的位置,請使用 CSS 屬性 flex-direction: row-reverse
。
搭配 Radio Group 使用
import RadioGroup from '@mui/joy/RadioGroup';
Radio Group 元件是多個 Radio 元件的理想包裝器,因為它提供了用於分組和更好的鍵盤導航可訪問性的客製化 API。
受控
使用 value
和 onChange
屬性來控制單選按鈕執行的動作。例如,以下示範中的單選按鈕會更新狀態以反映所選選項
焦點外框
預設情況下,焦點外框會包圍單選按鈕及其標籤。如果您需要將焦點設為省略標籤,請鎖定 radioClasses.radio
類別並新增 position: 'relative'
。
自訂圖示
使用 checkedIcon
和 uncheckedIcon
屬性為單選按鈕新增自訂圖示,分別對應於每個狀態。以下示範顯示如何將自訂 checkedIcon
應用於位於每個工作表角落的單選按鈕
無圖示
使用 disableIcon
屬性移除單選按鈕的圖示。在這種情況下,您需要使用諸如邊框和背景顏色之類的 CSS 屬性來傳達單選按鈕的狀態,如下面的示範所示
對齊
層級
此範例示範了元件的組合,其靈感來自Tailwind Labs 的這張 Dribbble 截圖。
使用以下方式付款
電子商務產品屬性
此範例示範了使用 Sheet 元件作為單選按鈕容器的複雜自訂。焦點外框被自訂為更小,並且顏色會根據值而變化。
核取圖示的顏色繼承了單選按鈕的 solid
變體,因此您無需手動選擇與背景對比度足夠的顏色。
無障礙設計
以下是一些確保您的單選按鈕元件具有無障礙功能的提示
- 每個 Form Control 都應具有適當的標籤。這包括單選按鈕、核取方塊和開關。在大多數情況下,這是透過使用 Form Control 和 Form Label 元素來完成的。
- 當無法使用標籤時,請確保直接在輸入元件上新增諸如
aria-label
、aria-labelledby
和/或title
之類的屬性。您也可以使用slotProps.input
屬性來新增它們。
<Radio
value="radioA"
slotProps={{
input: {
'aria-label': 'Radio A',
},
}}
/>
請造訪 WAI-ARIA Authoring Practices 以取得更多詳細資訊。
結構
Radio Group 元件由一個根 <div>
元素組成,該元素可以包裝多個 Radio 元件。
<div class="MuiRadioGroup-root">
<!-- Radio components here -->
</div>
Radio 元件由一個根 <span>
組成,其中還有巢狀的 <span>
元素,用於單選按鈕、圖示、動作(帶有巢狀 <input>
)及其關聯的 <label>
。
<span class="MuiRadio-root">
<span class="MuiRadio-radio">
<span class="MuiRadio-icon"></span>
<span class="MuiRadio-action">
<input class="MuiRadio-input">
</span>
</span>
<label class="MuiRadio-label">
</span>
無樣式
使用 Base UI Radio 完全擁有元件的設計,沒有 Material UI 或 Joy UI 樣式需要覆寫。此元件的無樣式版本是需要大量自訂且捆綁包尺寸較小的理想選擇。