Topics

Figma 中圖示顏色無法變更!元件實例切換問題解決指南

  • column

在 Figma 中分工製作設計元件時,有時會遇到意想不到的問題。特別是當元件化的圖示顏色無法正確切換時,想必令人困擾吧?

本文將深入探討許多 Figma 使用者面臨的「圖示實例顏色無法反映」問題,為你清楚說明其成因與解決方案。

我製作的按鈕被資深同事做成了元件!!而且圖示部分也能切換!!真厲害!不過圖示還不夠多,所以我要不斷註冊新的圖示元件,讓它成為好用的元件!

我默默地製作了大量圖示。

咦?圖示元件好像無法正確切換? 明明用和資深同事一樣的方法製作…。為什麼顏色無法正確切換呢?

那就是你的圖示製作方式有問題呀!

資深同事!要怎樣才能讓顏色變換呢?

呿呿,好吧!讓我告訴你 Figma 圖示切換的秘訣。要好好記下來,牢牢記在腦子裡喔!

好的!我會認真學習!

為什麼顏色會被覆蓋?Figma 覆蓋機制的原理

在 Figma 中建立按鈕時,經常會設定透過例項屬性來切換圖示部分。然而,在實際切換圖示時,設定的顏色常常無法套用,或是出現顏色意外改變的問題。

在 Figma 中切換圖示(icon)時,是否遇過設定的顏色無法套用或顏色改變不了的困擾?本文將為您清楚介紹其原因與解決方法。

請確認圖示側和按鈕側的設定,讓圖示切換時顏色能夠正確切換。

首先確認按鈕元件的結構

首先讓我們用以下結構來確認顏色被覆蓋的情況。

① 原始圖示元件為黑色

② 在按鈕中作為例項複製,但只覆蓋顏色

③ 在此狀態下切換到其他圖示時,圖示顏色有時會回復到預設顏色,而不是白色

提示:了解主元件與覆寫的關係

最基本的注意事項是,覆寫的屬性將不再反映主元件的變更。

覆寫的部分:在實例中變更色彩或文字時,該部分會變成獨立的。之後即使修改主元件的同一部分,也不會套用到該實例。覆寫的內容(填充或邊框顏色、文字等)將優先生效。

未覆寫的部分:未修改的屬性(例如 padding 或 margin)將直接反映主元件的變更。

特別需要注意的是主元件的圖層結構變更的情況。若變更圖層名稱或刪除圖層後新增新圖層,Figma 可能會將其識別為不同的元素,導致實例的覆寫設定重置。

基於以上內容,讓我們來探究圖示色彩為何無法切換的原因。

原因 1:「填充(Fill)」與「邊框(Stroke)」的設定混在一起

即使圖示外觀看起來相同,「填充(Fill)」與「邊框(Stroke)」在 Figma 中是完全不同的屬性。因此,當從以填充方式呈現的圖示切換到以邊框粗細繪製的圖示時,色彩覆寫可能無法正確反映。

例:

圖示 A

圖示 B

  • 圖示 A:由填充(Fill)組成的外框化圖示
  • 圖示 B:由線條(Stroke)描繪輪廓的圖示

如此一來,由於圖示的繪製方式不同,套用色彩的結果也會隨之改變,因此 統一表現方法是很重要的。點擊圖示 B 的圖示時,雖然已指定填充顏色為白色,但由於該圖示元件僅由線條構成,所以顏色不會被替換。不過實際上白色已正確反映在填充方式中(由於沒有填充元素,白色無處可去...)。

解決方案
建立規則讓所有圖示都使用「填充」來建立。用線條繪製的圖示必須進行外框化(command+shift+O),並轉換為「填充」物件。這樣做還能帶來實作時更容易處理的優勢。

在我們的情況下,實作時會將 SVG 的 path 放入 CSS 變數,或使用 Astro Icon 組件來整合,所以我們統一使用填充方式。

保持線條(Stroke)形式時,縮放圖示時線條粗度會改變,也會造成設計崩壞。除非有特殊原因,否則外框化並統一為「填充」是最佳做法!

若僅用線條構建,縮放圖示時線條尺寸會保持不變。箭頭等簡單路徑的圖示問題不大,但複雜圖示在 12px 時會被壓扁,或在 80px 時會顯得過於寬鬆。

用線條構建的圖示在改變尺寸時,線條粗度也會跟著改變,因此外框化是最佳方案。若想保留外框化前的資料,可在元件附近放置原始資料。

用線條(Stroke)構建的圖示合併後雖會轉換為填充(Fill),但也經常會出現部分尺寸無法改變等問題。

原因2:圖層名稱不相符

Figma 具有以下規格:當切換元件實例時,具有相同圖層名稱的元素會繼承樣式和屬性

例:

圖示 A

圖示 B

  • 圖示 A 的向量圖層名稱:Vector
  • 圖示 B 的向量圖層名稱:Vector2

當圖層名稱不同時,Figma 會判斷它們為「不同的物件」,導致覆蓋的樣式無法正確套用。

解決方法:統一圖示中使用的圖層名稱(例如:全部使用Vector

簡單來說,你想要著色的路徑圖層名稱全部要用同一個名字喔!

原因3:圖層結構(層級)不同

即使統一圖層名稱,有時仍然無法正確切換。這種情況下可能與圖層結構的差異有關。如果切換來源和切換目標的圖層數量或結構不同,屬性可能無法正確對應。不過,只要圖層名稱相同,某些情況下層級差異不會造成問題

例:

圖示 A

圖示 B

圖示 C

  • 圖示 A 是將「Vector(path)」轉換為輪廓並整合為一個向量(基礎圖示)
  • 圖示 B 的階層為「Flame(Flame) > Vector(path)」→ 可以(色彩會繼承到路徑名「Vector」)
  • 圖示 C 的結構為「Vector(Flame) > Flame(path)」→ 不可以(設定在 Flame 名「Vector」上的色彩變化會出現)

如此一來,當圖層名「Vector」包含群組結構時,需要特別留意樣式的應用方式。此外,即使名稱相同,色彩變化也僅限於最頂層(參考圖示 C),第二層的 Vector 不會套用色彩變化。

解決方案:不只是圖層名稱,應該設計使得實際套用樣式的路徑結構也一致,這樣能更容易避免問題。

只要向量名稱相符,即使結構稍有差異通常也沒問題。但在團隊開發中,為了方便後加入的成員,最好還是盡可能統一內部結構會比較貼心。

原因 4:原始元件與「填滿(Fill)」或「描邊(Stroke)」的數量不同

若是單色,整合圖層或統一圖層結構和圖層名稱就不用擔心。但是,當要切換到與原始元件「填滿(Fill)」或「描邊(Stroke)」數量不同的圖示時,可能只會切換部分顏色,其他顏色保持不變,結果不如預期。基本上應該讓圖示統一為單色。或者如果必須使用兩色,可以考慮另外建立兩色圖示專用的圖示變數等解決方案。

解決方案

  • 不要混用單色和多色圖示。
  • 如果需要多色圖示,請在變數中複製圖示元件,建立用於雙色圖示的版本。
  • 使用多色圖示時,基本上不使用色彩覆蓋。

即使覆蓋單色圖示,也只能變更一種顏色,請小心注意!

原因5:混合模式或遮罩的影響

如果圖示使用了遮罩或特殊的混合模式(例如正片疊底),即使改變顏色,視覺上也可能不會產生變化

對應方法
如果使用了遮罩或混合模式,請將物件合併、統合(Flatten),轉換為符合外觀的簡單路徑物件後,再進行元件化。

在這種情況下,最後最好也進行外框轉換或簡化為簡單的路徑,會更安心。如果使用了正片疊底,透過即時追蹤等方式充分轉換為路徑會更有保障。


檢驗總結

原因

內容

解決方案

圖層名稱不符

切換實例時屬性未能繼承

統一所有圖示的圖層名稱(例如:Vector)

圖層結構不符

當圖層階層或結構不同時,樣式可能無法正確套用

統一最終繪製物件的結構

基礎元件的圖層數量不同

基礎元件的 fill 數量設定不同

透過套用樣式、複合路徑與合併來解決

混合/遮罩

顏色視覺上無效

恢復至 Normal 混合模式、移除遮罩

實際確認的顏色反映行為

以下是在按鈕內切換各種圖示時確認的顏色反映行為(請參考圖片)。

測試案例

結果

備註

路徑轉換為外框

✅ 顏色反映有效

結構簡潔,比較穩定。但重新編輯會比較困難。

路徑進行布林運算的情況(合併等)

✅ 顏色反映有效

只要最上層的名稱相同就基本上沒問題。只要直接下層的圖層數量與原實例相同,就能正確切換。

向量的層級結構不同(Group > Vector)

✅ 顏色反映有效

只要對應部分的圖層名稱一致就可以。但如果結構不同或名稱重複,有時可能無法正確顯示

更複雜的圖形(混合或路徑合併)

✅ 顏色反映有效

將路徑整合在一起會比較穩定

將複製來源的向量放入群組或框架內等更改結構的情況

🔺 顏色可能無法反映的情況

很可能被識別為不同圖層,所以如果要加筆的話,複製元件並修改複本會更保險

向量名稱不同

❌ 顏色未反映

圖層名稱不符會被視為不同物件

內部結構比原始資料更複雜,差異較大

❌ 顏色未套用

當圖層數增加或影格數量增多時,只有部分顏色會反映。差異較大,有可能被判定為不同圖層

刪除複製來源後進行替換

❌ 顏色未反映

即使同名也會被視為不同

圖示路徑的父框架中存在同名框架時

❌ 顏色套用至父框架

父級別名框的顏色變化會反映在上面,因此路徑樣式無法正確應用

運營提示

驗證後得出的要點:

  • 圖層名稱與結構的一致性非常重要
  • 使用 Color Style 或 Variables 管理填充色比較放心,但不一定需要指定
  • 圖標製作時應考慮實裝的易用性,統一使用填充(使用線條的話,縮放時大小容易偏差,建議轉換為輪廓)
  • 若要在現有圖標上新增元素,建議不要編輯目前反映的變體,而是新建圖標並逐一替換,這樣更容易避免顏色問題

從設計製作到實裝順利進行的要點:

  • 統一框架尺寸(不要使用 24px、40px、80px 等不統一的尺寸)
  • 圖標部分使用縮放功能時,會根據圖標尺寸的變化自動調整大小(無論是實裝還是設計層面,資料處理都會變得簡單得多)

此外,我們的實裝規則:

  • 顏色設定為純黑色 #000(Astro Icon 原始資料若非黑色,將無法改變顏色)

營運階段容易出現的問題:

  • 修正既有圖示須謹慎:在營運過程中,若對既有圖示進行元素新增或修正,容易導致結構意外改變,進而引發顏色套用問題。此時應避免直接編輯現有元件,而是遵循規則建立新的圖示元件,並進行替換會更為安全。

總結

你明白了嗎?建立圖示時,基本上只要遵守這 3 個規則就沒問題! 1. 繪製方式統一採用「填充」(線條需轉換為描邊!) 2. 欲套用顏色的路徑「圖層名稱」須保持一致 3. 圖示的「圖層結構」盡量保持簡潔 而在營運階段特別需要留意的是既有圖示的修正。修正過程中結構容易改變,進而導致顏色無法正確套用的問題。 因此,與其直接修改既有圖示,不如遵循規則新建元件,在新元件中修正圖示。之後在按鈕元件端將舊圖示替換為新圖示,這樣應能大幅減少顏色相關的問題。

感謝您!這樣我也成為圖示大師了!我會用前輩教的方法來製作元件!

切換圖示實例時,即使外觀相同,內部結構不同也會導致顏色套用失敗。

本次介紹的重點,特別是「填充統一」「圖層名稱統一」這兩點,只要徹底遵循,應能防止大多數問題的發生。

若仍無法正確切換,通常是內部結構差異或父圖層擁有相同名稱所導致。

衷心希望本文能協助你在 Figma 的設計作業中獲得更舒適的體驗。

本文作者

UI 設計每天都在更新!也在思考著 LP 設計要如何融入無障礙設計。最近已經有段時間沒碰標記語言了,「要不要也提升一下 JavaScript 技能?」這樣在思考著。喜歡北村匠海!

Hasshi

網頁設計師 / 2018年入社 / 心態上始終還是個初心者設計師

查看此員工的文章

信心十足的團隊體制與迅速的應對能力是我們的優勢

Liberogic 擁有經驗豐富的人員積極推進專案,因而獲得客戶的高度評價。
我們恰當地安排專案經理和總監,致力於順利推進整個專案。 我們避免不必要的全面投入而導致成本增加,而是採用適材適所配置資源的方式,因此在業務把握到估價制作與提交的速度上也備受好評。

請注意,我們不積極進行 SES 形式的駐場業務。

Slack、Teams、Redmine、Backlog、Asana、Jira、Notion、Google Workspace、Zoom、Webex 等幾乎所有主要的專案管理工具和聊天工具都可供您使用。

您對 Figma 設計系統有任何困擾嗎?

案例分析