本文同步自 2026 iThome 鐵人賽原文 ,發布日期為 2026-08-07。完整系列可見 iThome 系列頁

安安~我是ChiYu~

昨天才把帳號、密碼、搜尋與備註送回各自的輸入元件,我繼續往下填邀請表單,AI 又替我準備了一排整整齊齊的開關。

AI 第一版把通知管道、通知頻率與立即啟用全部做成 Switch

圖 1:和昨天結尾是同一個 AI 第一版。通知頻率的三個答案可以同時開啟,卻又看不出哪些設定已經生效。

Email、站內通知、通知頻率,連「邀請後立即啟用」都長得一樣。畫面很有設定頁的樣子,至於可以選幾個、現在是在改表單值還是系統狀態,畫面選擇保持沉默。

這個差別不能等到使用者點完才揭曉。假設我關掉「啟用登入通知」後直接離開頁面:如果產品把 Switch 設計成即時更新,我會認為設定已經寫入;如果 Checkbox 位在一份還沒送出的表單裡,我剛才只是修改暫存值。

先把話說準:Switch 本身只表示 on/off,不會自帶一條通往後端的專線。切換後立刻儲存,或等按下「儲存設定」才送出,都要由產品規格決定。外觀只能提示操作,不能替資料流程作證。

外觀只差一小塊,操作承諾差很多。

選擇控制比較頁:先分多選、互斥與二元開關,再確認儲存時機

圖 2:比較頁先問資料能否同時成立,再判斷這是表單選擇、二元設定還是操作模式。儲存時機要另外寫,不能全推給 Switch。

先分清楚資料關係,再決定何時儲存

我會先把設定變更寫成一小段時間線。使用者做了什麼、資料在哪一刻成立,這兩件事比開關要圓還是要方更值得先決定。

使用者正在做什麼元件表達的關係適合的元件
勾選 Email 與站內通知每一項可獨立成立,也可以同時選多項。Checkbox
在即時、每日摘要、每週摘要中選一項同一組互斥,只保留一個答案。Radio
開啟或關閉「登入通知」單一設定只有 on/off 兩種狀態。Switch
在編輯器裡啟用粗體立即改變目前工具或操作模式。Toggle Button
在列表、看板與行事曆間切換從少量且緊密相關的模式中選擇。Segmented Control

所以我在選元件前先問兩題:這些值能不能同時成立?使用者是在填資料、切換系統設定,還是改變目前的工具或檢視?

第一題會把 Checkbox 和 Radio 分開,第二題則讓 Switch、Toggle Button 與 Segmented Control 各自回到正確工作。至於點完是否立即寫入後端,那是第三題,而且五種元件都不能替產品經理自動回答。

Checkbox 可以多選,2/3 時還要說出「只選了一部分」

Checkbox|核取方塊 適合彼此獨立、可以同時成立的選項。LumenDesk 的 Email、站內通知與手機推播能各自勾選,最後再和整份設定一起儲存,所以我保留 Checkbox。

UI 元件百科的 Checkbox 群組操作畫面

圖 3:Email 與手機推播已勾選、站內通知未勾選;上方「全選通知管道」顯示部分選取與已選 2/3。

我打開 Demo 時,三個子項目已經選了兩個。最上方的「全選通知管道」既不能顯示已全選,也不能假裝完全沒選;它需要中間狀態,旁邊的 2/3 則把目前資料說得更直接。

接著我按下全選,三個子項目全部勾選,計數更新成 3/3。

子項目狀態全選控制使用者看到的意思
0/3未選取目前沒有選擇任何通知管道。
2/3部分選取有些已選,有些尚未選。
3/3已選取所有通知管道都包含在這次設定裡。

部分選取不是 Checkbox 一時猶豫,它在表達父項與子項的資料關係。Vibe Coding 若只寫「做三個通知開關」,AI 很可能漏掉這層關係;我會明確補上能否多選、是否一起儲存,以及全選如何反映子項目。

Radio 讓同一組只留一個答案,圓形只是外觀

Radio|單選按鈕 用在彼此互斥的選項。通知頻率只能是即時、每日摘要或每週摘要其中一種;選了新的答案,原本的答案就得取消。

Vibe UI Atlas 的 Radio 實際 Demo:通知頻率只能保留一個選項

圖 4:Radio Group 只保留一種通知頻率,群組名稱也持續說明這一題正在選什麼。

Radio 最容易被當成「圓形 Checkbox」。資料模型才不管它圓不圓:Checkbox 能留下多個布林值,Radio Group 在同一組裡只能留下單一答案。

付款方式、配送速度或通知頻率都很適合 Radio,只要選項數量不至於把整頁撐爆。群組要有可見名稱,選項文字也得能單獨理解。需求如果允許複選,就不要因為偏愛圓形硬塞 Radio,資料最後只會默默吃掉其他答案。

Switch 表達 on/off;若設計成即時儲存,失敗時要回復

Switch|切換開關 適合表達單一設定的 on/off,例如「啟用登入通知」或「允許公開個人頁」。在 LumenDesk 這個情境裡,我選擇讓切換立即儲存,因此系統要回饋更新結果。

Vibe UI Atlas 的 Switch 實際 Demo:可立即生效的登入通知設定

圖 5:Switch 表達目前設定是開或關。切換後還要處理儲存中、成功與失敗回復。

把圓點滑到右邊很簡單,網路失敗後怎麼回復才麻煩。畫面若顯示已開啟,後端卻沒有儲存成功,使用者下次回來看到原值,會以為系統偷偷改了設定。

我會要求切換期間禁止重複操作;儲存失敗時回復原值,並在控制附近說明原因。縮圖移動完成,不能直接當成資料已經寫入的收據。

設定變更與回饋方式

圖 6:Checkbox 與 Radio 常在調整一組值後統一提交;Switch 則要把即時儲存與失敗回復一起設計。

畫面上出現「儲存」Button,不代表 Switch 一定用錯。問題仍然是規格:這個 Switch 是立即寫入,還是只修改表單裡的暫存值?兩種都能做,但畫面不能讓人猜。

Toggle Button 改變工具模式,不拿來代替表單選項

Toggle Button|切換按鈕 處理目前工具或操作模式,例如編輯器是否啟用粗體、篩選面板是否展開。

Vibe UI Atlas 的 Toggle Button 實際 Demo:切換編輯器工具模式

圖 7:Toggle Button 顯示粗體工具目前是否啟用;這是操作模式,不是等待表單提交的資料。

Toggle Button 要清楚呈現目前是否啟用,也需要可辨識名稱。它很適合工具列,不適合「同意條款」或「接收 Email」這種表單資料。那些內容需要 Checkbox 的選取規則,不能只因為 Toggle Button 看起來比較俐落就請它兼差。

如果使用 aria-pressed 表達切換狀態,按鈕名稱應保持穩定。例如名稱一直是「粗體」,再另外回報目前是 pressed 或 not pressed;不要每按一次就讓元件連自己叫什麼都一起換掉。

Segmented Control 適合少量相關模式,不能只看它排得很整齊

Segmented Control|分段控制 常用來切換少量且緊密相關的選項、狀態或檢視。LumenDesk 這裡用的是列表、看板與行事曆三種檢視,資料沒有改變,只是換一種看法。

Vibe UI Atlas 的 Segmented Control 實際 Demo:在少量檢視模式間切換

圖 8:同一批資料在列表與看板間切換,目前所在模式要一眼看得出來。

不同平台與設計系統對 Segmented Control 的細節不完全一樣,有些只做單選,有些也能處理多選或一組動作。這篇先看 LumenDesk 的單選檢視切換。選項很多、文字很長,或每個答案需要額外說明時,Radio Group 會比較容易讀;硬塞進同一排,最後通常只剩縮字和猜圖示兩條路。

Checkbox、Radio 與 Switch 可以在 三種選擇控制的完整比較頁 一起核對;Toggle Button 與 Segmented Control 則回到各自的元件頁操作。先處理資料規則,再看個別 Demo,不用靠控制項長得像哪一套設計系統來選。

改寫 Prompt:元件語意與儲存時機要分開寫

原本那句「全部放成開關」沒有說資料規則。我把通知管道、通知頻率與立即生效拆開後,Prompt 會這樣寫:

為帳號設定頁建立五種控制:
- 「通知管道」使用 Checkbox 群組,可同時選 Email、站內通知與手機推播;提供「全選」控制,部分選取時要顯示中間狀態與已選數量。這一組按下「儲存設定」後才送出。
- 「通知頻率」使用 Radio 群組,只能在即時、每日摘要、每週摘要中選一個,保留可見群組名稱。
- 「啟用登入通知」使用 Switch 表達 on/off。這個設定切換後立即儲存;更新中禁止重複切換,失敗時回復原本值並顯示錯誤訊息。
- 編輯器的「粗體」使用 Toggle Button,按鈕名稱保持不變,另行表達目前 pressed 狀態。
- 成員資料的列表、看板與行事曆使用單選 Segmented Control;切換後只改變檢視,不修改原始資料。
不要用只有圖示的控制取代文字 Label;360px 寬度下,所有選項與訊息都必須可閱讀與操作。

我會用五個反向操作驗收:勾兩個 Checkbox 後取消其中一個;換一個 Radio 選項,確認舊值被取消;讓 Switch 的即時儲存失敗;關閉粗體 Toggle Button;再從列表切到看板,確認原始資料沒有被改掉。只測預設畫面太輕鬆,這些反向操作才看得出資料規則有沒有真的做進去。

通知設定分工完成,最後一個 Dropdown 又把規則攪在一起

修改後,Email、站內通知與手機推播可以同時成立,所以使用 Checkbox;通知頻率只能保留一個答案,交給 Radio;登入通知是單一 on/off 設定,使用 Switch,並由規格另外決定它要立即儲存。Toggle Button 留在工具模式,Segmented Control 則負責切換資料檢視。

這次畫面沒有多出什麼華麗效果,使用者卻能預測每一次點擊何時生效。對 AI 來說,資料規則也終於不必從開關造型裡通靈。

邀請流程剩下「所屬部門」和「協作者」兩個欄位。部門要能搜尋,但只能選一筆既有資料;協作者同樣要搜尋,卻可以保留多筆結果。AI 把它們都叫 Dropdown,前面好不容易拆清楚的規則又準備混成一鍋。

先看「所屬部門」的第一版。它能輸入,也真的會掉出一張清單;至於這段文字最後算搜尋條件、新部門名稱,還是已完成的選取,畫面沒有打算多說。

模糊 Prompt 產生的第一版可搜尋下拉選單

圖 9:輸入「研究」後出現「研究組」,但 Label、既有值限制、選取結果與鍵盤規則都沒有交代。

明天,我們就來拆這個什麼都能裝、也因此什麼都沒說清楚的「下拉選單」。

參考資料與查閱日期

資料查閱:2026-08-07。