在 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 數量設定不同 | 透過套用樣式、複合路徑與合併來解決 |
混合/遮罩 | 顏色視覺上無效 | 恢復至 |
實際確認的顏色反映行為
以下是在按鈕內切換各種圖示時確認的顏色反映行為(請參考圖片)。
測試案例 | 結果 | 備註 |
|---|---|---|
路徑轉換為外框 | ✅ 顏色反映有效 | 結構簡潔,比較穩定。但重新編輯會比較困難。 |
路徑進行布林運算的情況(合併等) | ✅ 顏色反映有效 | 只要最上層的名稱相同就基本上沒問題。只要直接下層的圖層數量與原實例相同,就能正確切換。 |
向量的層級結構不同(Group > Vector) | ✅ 顏色反映有效 | 只要對應部分的圖層名稱一致就可以。但如果結構不同或名稱重複,有時可能無法正確顯示 |
更複雜的圖形(混合或路徑合併) | ✅ 顏色反映有效 | 將路徑整合在一起會比較穩定 |
將複製來源的向量放入群組或框架內等更改結構的情況 | 🔺 顏色可能無法反映的情況 | 很可能被識別為不同圖層,所以如果要加筆的話,複製元件並修改複本會更保險 |
向量名稱不同 | ❌ 顏色未反映 | 圖層名稱不符會被視為不同物件 |
內部結構比原始資料更複雜,差異較大 | ❌ 顏色未套用 | 當圖層數增加或影格數量增多時,只有部分顏色會反映。差異較大,有可能被判定為不同圖層 |
刪除複製來源後進行替換 | ❌ 顏色未反映 | 即使同名也會被視為不同 |
圖示路徑的父框架中存在同名框架時 | ❌ 顏色套用至父框架 | 父級別名框的顏色變化會反映在上面,因此路徑樣式無法正確應用 |
運營提示
驗證後得出的要點:
- 圖層名稱與結構的一致性非常重要
- 使用 Color Style 或 Variables 管理填充色比較放心,但不一定需要指定
- 圖標製作時應考慮實裝的易用性,統一使用填充(使用線條的話,縮放時大小容易偏差,建議轉換為輪廓)
- 若要在現有圖標上新增元素,建議不要編輯目前反映的變體,而是新建圖標並逐一替換,這樣更容易避免顏色問題
從設計製作到實裝順利進行的要點:
- 統一框架尺寸(不要使用 24px、40px、80px 等不統一的尺寸)
- 圖標部分使用縮放功能時,會根據圖標尺寸的變化自動調整大小(無論是實裝還是設計層面,資料處理都會變得簡單得多)
此外,我們的實裝規則:
- 顏色設定為純黑色 #000(Astro Icon 原始資料若非黑色,將無法改變顏色)
營運階段容易出現的問題:
- 修正既有圖示須謹慎:在營運過程中,若對既有圖示進行元素新增或修正,容易導致結構意外改變,進而引發顏色套用問題。此時應避免直接編輯現有元件,而是遵循規則建立新的圖示元件,並進行替換會更為安全。
總結
你明白了嗎?建立圖示時,基本上只要遵守這 3 個規則就沒問題! 1. 繪製方式統一採用「填充」(線條需轉換為描邊!) 2. 欲套用顏色的路徑「圖層名稱」須保持一致 3. 圖示的「圖層結構」盡量保持簡潔 而在營運階段特別需要留意的是既有圖示的修正。修正過程中結構容易改變,進而導致顏色無法正確套用的問題。 因此,與其直接修改既有圖示,不如遵循規則新建元件,在新元件中修正圖示。之後在按鈕元件端將舊圖示替換為新圖示,這樣應能大幅減少顏色相關的問題。
感謝您!這樣我也成為圖示大師了!我會用前輩教的方法來製作元件!
切換圖示實例時,即使外觀相同,內部結構不同也會導致顏色套用失敗。
本次介紹的重點,特別是「填充統一」「圖層名稱統一」這兩點,只要徹底遵循,應能防止大多數問題的發生。
若仍無法正確切換,通常是內部結構差異或父圖層擁有相同名稱所導致。
衷心希望本文能協助你在 Figma 的設計作業中獲得更舒適的體驗。
UI 設計每天都在更新!也在思考著 LP 設計要如何融入無障礙設計。最近已經有段時間沒碰標記語言了,「要不要也提升一下 JavaScript 技能?」這樣在思考著。喜歡北村匠海!
Hasshi
網頁設計師 / 2018年入社 / 心態上始終還是個初心者設計師