iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
佛心分享-IT 人自學之術

從 Figma 到 Angular:打造智慧醫院預約掛號系統的 30 天實作之旅系列 第 6

Day 6|為什麼不能每個按鈕都重新畫?Figma Component 實作

  • 分享至 

  • xImage
  •  

前幾天完成Wireframe,並開始將畫面轉換成正式的UI Design後,我發現一個新的問題。

雖然目前每個頁面都已經有基本的UI設計,但網站中有很多重複出現的元素,例如按鈕、輸入框、卡片等。

如果每個頁面的按鈕都重新製作一次,之後想修改按鈕樣式,就必須一個一個修改。

因此這一天開始學習Figma的Component,嘗試將網站中會重複使用的UI元件整理起來。

一、什麼是Figma Component?

簡單來說,可以把Component想成一個「可以重複使用的UI元件」。

例如網站中會有很多按鈕,會有不同狀態:

Button
-Default
-Hover
-Pressed

如果直接複製一般圖形,每個按鈕其實都是獨立的。

但如果把按鈕建立成Component,就可以建立很多個Instance使用。

之後如果修改主要Component的設計,就可以同步影響使用這個Component的地方。

這讓我開始理解,UI Design不只是把畫面畫漂亮,也需要考慮之後修改與維護的方式。

二、開始建立網站共用的UI Component

主要是整理一些在不同頁面會重複使用的元件像是,常用的按鈕、Header、輸入框、卡片等。

如果每個頁面都重新製作,不但花費時間,也容易造成不同頁面的樣式不一致。

因此我開始嘗試把這些常用元素整理成可以重複使用的Component。

Header

https://ithelp.ithome.com.tw/upload/images/20260920/20178845ZTn8frcmg9.png

因為導覽列每個頁面都要有,所以我把Header做成Component

且有登入和未登入兩個版本

三、Button Componen

首先是網站中最常使用的按鈕。
因為按鈕不只有一種狀態,所以我開始思考如何把不同狀態整理在同一個Component中,讓之後製作其他頁面時可以直接重複使用。

例如:

Button

  • Default
  • Hover
  • Pressed

** Default 是按鈕的一般狀態。
當滑鼠移動到按鈕上方時,使用
Hover狀態。
點擊按鈕時,則使用
Pressed**狀態。

我也將這些狀態加入到首頁的按鈕設計中,讓之後其他頁面可以直接使用相同的按鈕元件。

我也將這些不同狀態加入首頁的按鈕設計中,建立好 Button Component 後,之後其他頁面就可以直接使用相同的按鈕元件。

這樣不需要每個頁面重新設計按鈕,也能讓整個網站的按鈕樣式保持一致。如果之後需要修改按鈕的樣式,也可以直接修改 Component,再同步套用到其他頁面。

主要按鈕

https://ithelp.ithome.com.tw/upload/images/20260920/20178845wMWdV5CyvZ.png

主要按鈕是頁面中較重要的操作,例如「立即預約」、「查看醫師」、「查看詳情」及「登入」等。

由上到下依序為Default->Hover->Pressed,顏色由淺藍色逐漸變為深藍色,並統一使用白色文字。

次要按鈕

https://ithelp.ithome.com.tw/upload/images/20260920/20178845IltiKGoMDf.png

次要按鈕主要用於「科別篩選」、「預約時段篩選」等操作。

由上到下依序為,Default->Hover->Pressed

* Default:白色背景、深藍色框線、灰色文字
* Hover:淺藍色背景、深藍色框線、藍色文字
* Pressed:深藍色背景、白色文字

透過三種狀態的變化,讓使用者可以清楚感受到按鈕目前的互動狀態。

登入按鈕

https://ithelp.ithome.com.tw/upload/images/20260920/201788455faoLWx2vD.png

登入按鈕同樣建立 Default、Hover、Pressed 三種狀態。
由上到下依序為,Default->Hover->Pressed

* Default:白色背景、深藍色框線、灰色文字
* Hover:淺藍色背景、灰色文字
* Pressed:深藍色背景、黑色文字

取消按鈕

https://ithelp.ithome.com.tw/upload/images/20260920/20178845NHQO7mzJsr.png

取消按鈕也建立 Default、Hover、Pressed 三種狀態。

由上到下依序為,Default->Hover->Pressed,顏色由淺藍色逐漸變為深藍色,並統一使用白色文字。

四、輸入框Component

https://ithelp.ithome.com.tw/upload/images/20260920/20178845hU9SqAY5W5.png

除了按鈕之外,輸入框也是網站中很常使用的元件。

例如醫師查詢頁就有搜尋醫師的輸入框。

因此我也將輸入框建立成共用的Component,並設計不同的互動狀態。

Input

  • Default
  • Hover
  • Selected

Default是一般狀態。

Hover是滑鼠移動到輸入框上方時的狀態。

Selected則是使用者點擊輸入框後,準備輸入文字時的狀態。

透過這樣的方式,可以讓不同頁面的輸入框維持相同的設計。

* Default:白色背景、灰色框線、淺灰色提示字
* Hover:白色背景、深藍色框線、淺灰色提示字
* Pressed:白色背景、深藍色框線、淺灰色提示字**(使用Effects的Drop shadow增加陰影效果)**

五、卡片Component

https://ithelp.ithome.com.tw/upload/images/20260920/20178845KgQiO35PIs.png

網站中也有很多資訊是使用卡片呈現。

例如醫師查詢頁會使用醫師卡片,而醫院介紹頁則會使用醫療服務卡片。

雖然兩種卡片呈現的內容不同,但整體上都有類似的資訊區塊結構。

因此在設計UI時,也開始思考哪些部分可以整理成共用元件。

例如:

Card

  • Image
  • Title
  • Description
  • Button
    或是單獨卡片。

透過Component的方式,可以讓相同類型的卡片維持一致的間距、文字大小與版面結構。

六、FAQ Component

https://ithelp.ithome.com.tw/upload/images/20260920/20178845WR0f3d8aTs.png

後來在製作就醫資訊頁時,又遇到另一個Component的問題。

就醫資訊頁需要放很多FAQ,如果每一個問題都重新製作一個展開/收合的FAQ,會產生很多重複的工作。

因此我開始嘗試製作一個可以重複使用的FAQ Component。

原本建立Component後,我直接複製多個Instance,結果發現每個Instance裡面的問題和答案文字沒有辦法直接修改。

這也是我第一次真正遇到Component使用上的問題。

解決方法

https://ithelp.ithome.com.tw/upload/images/20260920/20178845zOZIjvRTxy.png
使用Text Property讓Component可以重複使用

後來詢問AI後,我了解到Figma可以使用Text Property(文字屬性)。

因此我將FAQ Component裡面的文字設定成Text Property,並分別命名為:

  • Question
  • Answer

這樣建立Instance後,就可以直接在右側的屬性面板修改Question和Answer。
例如:

FAQ Component
Question -> 如何預約掛號?
Answer -> 可以透過網站進行線上預約。

另一個Instance則可以修改成:

Question -> 看診前需要準備什麼?
Answer -> 請依照就醫資訊中的說明準備相關資料。

這樣只需要製作一個FAQ Component,就可以產生很多不同內容的FAQ。

這讓我開始理解Component不只是「複製東西」而已,而是可以建立一套可以重複使用的設計規則。

七、Component、Instance、Variant的關係

在實際操作Component的過程中,我也慢慢接觸到幾個新的概念。

Component

主要的元件。
可以把它想成「原始模板」。

Instance

由Component建立出來的使用版本。
例如建立一個Button Component後,可以產生很多個Button Instance。

Variant

用來表示同一個Component的不同狀態。
例如按鈕:

Button

  • Default
  • Hover
  • Pressed

這些就可以使用Variant來管理。

後來在個人檔案頁設計查看/編輯功能時,我也使用Variant建立:

Profile

  • View
  • Edit

讓同一組Component可以呈現不同狀態,而不需要製作兩個幾乎完全相同的畫面。

八、這次Component遇到的問題

在學習Component的過程中,我遇到比較大的問題就是:

「明明已經建立Component,為什麼複製出來的Instance還是不能直接修改內容?」

一開始我以為只要建立Component,再複製很多份就可以了。
實際操作後才發現,如果Component裡面的文字沒有設定成可以修改的屬性,Instance就無法直接替換內容。

另外,我也不太清楚:

  • Component和Instance有什麼差別?
  • Variant什麼時候使用?
  • FAQ的文字要怎麼讓每個Instance不一樣?
  • 查看/編輯這種不同狀態要怎麼整理?

這些都是第一次實際製作Component時遇到的問題。

九、解決方式

遇到問題後,我沒有直接把Component刪掉重新製作,而是先確認問題出在哪裡,再詢問 AI。

透過AI的說明,我逐漸搞懂:

  • Component是主要的元件模板
  • Instance是實際使用的元件
  • Variant可以管理同一個元件的不同狀態
  • Text Property可以讓Instance修改指定的文字內容

再依照這些概念重新調整自己的設計。

例如FAQ使用Text Property:

FAQ Component

  • Question -> Text Property
  • Answer -> Text Property

而個人檔案查看/編輯則使用Variant

Profile Component

  • View
  • Edit

這樣可以減少重複製作,也讓整個設計更容易管理。

十、今日學習

這次主要學習:

  • 了解Figma Component的用途
  • 了解Component與Instance的差異
  • 學習使用Variant管理不同狀態
  • 建立共用的Button、Input、Card等UI Component
  • 學習Text Property的使用方式
  • 嘗試建立可重複使用的FAQ Component
  • 了解如何透過Component減少重複製作
  • 開始思考UI元件的一致性與可維護性

十一、AI 協助

這次在製作Component時,主要透過AI協助釐清Figma的功能與使用方式。

例如:

  • Component與Instance的差異
  • Variant的使用時機
  • Text Property的設定方式
  • FAQ Component如何讓不同Instance顯示不同內容
  • 不同UI元件應該如何整理

在遇到問題時,我會先自己操作並確認問題,再整理目前的設計需求詢問AI。

參考AI提供的解決方式後,再依照實際專案需求進行調整與實作,而不是直接套用AI的建議。


上一篇
Day 5|從線框稿變成正式介面:智慧醫院UI Design
下一篇
Day 7|讓設計真正「動起來」: Figma Prototype預約流程
系列文
從 Figma 到 Angular:打造智慧醫院預約掛號系統的 30 天實作之旅9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言