[Note] 在 Figma 實作 Gradient Buttons 所碰到的問題

Yakko Wu
9 min readNov 29, 2019

--

2019/10/15 遇到前端做出來的跟設計稿的樣式不太一樣,為什麼會這樣?是發生了什麼事呢?

[涉及領域:使用者介面、前端工程]

來自 Facebook Messenger Bot 租屋吧買房吧專案—實價登錄頁面的 Buttons State

💡 Figma.com 是什麼呢?
可參考 Jasmine Lin 所發表:Figma — 異軍突起的設計協作神器 一文

紀錄與 Fornt-end 工程師一同探索的過程:
問題是怎麼發生的,來回反思與檢驗,最後又是如何解決的呢?

狀況描述

在 Figma 上設計好美美的 Gradient Buttons(漸層按鈕),交付給前端工程師手中後,不久就從 Local 端上截圖回報問題,讓我們來比對看看:

(Before) 原設計稿
(After) 工程師刻後的結果

是不是可以發現這兩者之間的不對勁,相較下明顯質地很平、不光滑晶透。

怎麼會沒對起來?!

到底是哪個環節出了問題呢?😵😱😱(崩潰

檢驗過程

這時候開始進入以下的邏輯流程,是借鏡「*科學方法」精神而來。

大膽假設,小心求證。

*註解:科學方法(Scientific Method)
觀察大自然並且對於自然現象提出有意義的問題,然後再想出假說來解釋自然現象,之後設計實驗來檢驗這些假說,核對從這些假說所給出的預言是否正確無誤。為了要防範在做實驗時發生錯誤或誤解,這些步驟必須具有可重複性。 -來自 Wiki

[假定]
定義可能發生的原因:
(1) 漸層圖層過於雜亂,或是被蓋上奇怪的圖層導致無法輸出成 Code
(2) 手動拖拉而產生的小數點,有著不乾淨的數值(例如 56.0321)
(3) Buttons 的高 Hight 與設計稿差了 10px

[檢驗]
從假設中一個一個反覆檢查與實驗:

- 第 (1) 點:每一個 Button 的漸層圖層,像是 Normal Button 本來有用到 3 層,其中漸層透明高光的部分有做 2 層調整為 1 層。
都是按照介面上所提供的功能去做,也沒有到雜亂,而且工程師也刻了其他有 3 層同樣做法的漸層 Buttons,在前台瀏覽都很正常,明顯問題不是出在這。

狀態是 Normal Button 的 Fill 漸層截圖

- 第 (2) 點:在想會不會是手動拖拉的緣故,產生的百分比數值是小數點,而導致在瀏覽器上顯示有所誤差?

與工程師商討的 Slack 留言

查到 Figma 討論區可能有關的文章,整串看下來都環繞在「漸層顏色的位置,處理上能不能更精確」的問題上。
也是在討論位置百分比數值是小數點這一點,似乎沒有人反應顯示上有太大問題,如果我想法沒有錯的話,都是希望數值能夠*漂亮一些。

*註解:簡單解釋何謂漂亮的數值?像是
52.9 調整到 53
52.88 調整到 53
53.45 調整到 53.5
這之間差距肉眼判斷差異不大,才會去微調成漂亮的數值。(可以不限整數或採 8-Point Grid System,端看習慣,甚至討論決定怎麼樣。)

💡如何讓漸層位置的百分比數值,調整成漂亮的「數字」?

如果還是堅持要漂亮、完美的百分比位置數值的話,上段的文章有提供了目前 Figma 版本的雞肋方法,就是:

畫面放到最大,手動拖拉每一個你設置的漸層,一個一個對準到每一格 Pixel 的位置,最後切換到 Code 看一下數值是否是整數。

By Bryn Jackson, from Figma Forum.

很累…對吧?

**2019/11/21更新**

據 2019/11/13 Luis Camino 在同串回覆:
「Figma 官方來信回應他,目前漸層數值手動輸入這一項功能,在不久的將來內是不會推出的。」

我難過QQ

From Figma Forum.

- 第 (3) 點:目測發現 Button CSS height 有少,會不會因為這樣導致漸層數值沒有對到設計稿的位置?結果工程師立馬改了,但問題依舊嗚嗚。

檢驗後原因都不是這些!

確立問題點

[再次假定]
又假設了另一種可能

(4) 來自於 Figma 本身產品的 Bug

「自己手打 Code,比起藉由某項工具生成出來的,都還要來得乾淨。」

會冒出這樣的想法,是學生時期使用過 Dream Weaver 這款 Adobe 網頁設計軟體,當時這軟體所產出的 Code 非常之髒,生成的頁面很容易有各種光怪陸離的事發生,想必有使用過的朋友應該能理解。(好像暴露年齡了XD 沒到這麼老就是)

從這點的方向去追追追,製作按鈕的過程中從有使用到的每個功能、參數一個一個去檢查 :

\發現系統產出的 CSS Code 有個數值不一樣!/

BINGO!

**攝於2019/10/15** 在 Figma 右方的 Panel/Code/CSS 那列的右方有兩個 icon,分別是切換成兩種顯示的方式

這兩種顯示方式,一比對之下讓我找到問題點在哪。

把 Radial Gradient 的 Code、Table 分開兩組,
並用粗體標示出來給大家仔細對照:

[Code]background: radial-gradient(100% 100% at 50% 14.58%, #FFF5CC 0%, rgba(255, 255, 255, 0) 100%), #F7A500;

奇怪?那個 Code 的 rgba(255, 255, 255, 0) 純白色怎麼會沒有 Position 數值?反而 Table 的是對的。

[Table]Fill: Radial Gradient
#FFF5CC @ 14.58%
rgba(255, 255, 255, 0) @ 61.04%

趕緊問了一下前端夥伴,回覆說是照 [Code] 貼上去的。
(畢竟 Panel 預設是 Code 最被先顯示出來,當下一定是優先看那部分)

確定是貼了 [Code] 的部分,果真也發現 [Code] 跟 [Table] 數值不一樣!

是少了純白色的 61.04% 位置,應該要修正成:

[Code]background: radial-gradient(100% 100% at 50% 14.58%, #FFF5CC 0%, rgba(255, 255, 255, 0) 61.04%), #F7A500;

🎊🕺 皆大歡喜 💃🎊
能幫助到前端工程師夥伴,實在太開心了~~~

當我在撰寫這邊文章時,又去檢查一下官方有沒有修正:

**攝於2019/11/28**

不但修正了 RGBA 位置的數值問題,也調整 radial-gradient 那串 Code:

[原本]background: radial-gradient(100% 100% at 50% 14.58%, #FFF5CC 0%, rgba(255, 255, 255, 0) 100%), #F7A500;

看來就這問題被官方好好修正好囉!大家可別太擔心 ✌️

[現在]background: radial-gradient(100% 100% at 50% 0%, #FFF5CC 14.58%, rgba(255, 255, 255, 0) 61.04%), #F7A500;

不過!!很難說

哪天 Figma 更新、改版,甚至有可能*程式重構了!

*註解:代碼重構(Code Refactoring)通常是指在不改變代碼的外部行為情況下而修改原始碼,有時非正式地稱為「清理乾淨」。

如果往後製作上也遇到跟我一樣的情況,

多留意是否也是生成的 Code 出的問題,

可以直接試著從 Panel 所生成的 Code 著手檢查看看吧!

自己活生生血淋淋的例子,分享給大家警惕外,希望可以縮短一些檢驗的時間,使工作不會被耽誤太久。

Murmru: 關於「重構」聽說是工程師人人聞之喪膽的關鍵字,可能說的有些誇張,但似乎真的是個麻煩事。我的想法 Figma 工程部門真要這麼做心臟一定很大顆,不然就是個個都很神XD

後記

「或許有些人一定會碰到跟我一樣的問題。」
因而萌生出想要將經歷過的所見所聞,給它分享出去。

思考過程遠比答案來得重要,領會了過程的意義,才能夠得出正確的結果。

所以這篇著重在分享過程這件事上,從中實踐了反覆的思考、驗證,並且詳實把過程記錄起來,除了整理思緒,也便於審視哪些有需要改善的地方。

中間看了不少資料,很意外學會了新的技巧(文中的調整漸層位置的整數百分比),因此增加了學習廣度,也滿推薦大家可以考慮運用看看哦!

往後設計過程上有任何值得分享的經歷、知識,

會找個時間送給大家 :)

PS: 感謝文中前端工程師 Jared 夥伴,跟我一起煩惱、一起解決難題。
未來一起加油!

Hi 非常謝謝你看完我的文章:喜歡的話,
別忘了按下 👏👏👏 拍手鼓勵鼓勵。
有了無形地鼓勵,
將會成為驅動下篇文章的精神糧食哦!
- 很歡迎 Follow Yakko Wu 接收最新文章
- 或者是 Follow Yakko Twitter(不時有遊戲、設計、創作、開發心得的分享)
歡迎追隨、一起交流互動 :)若有疑問的地方,
非常歡迎文章底下留言來信 imyakkowu@gmail.com 一起討論~謝謝

--

--

Yakko Wu

一位從 15 歲開始長跑繪畫與設計熱情的北棲女孩。身在滿滿工程師堆裡的小小設計師。在這裡會分享專題研究、實務經驗,從 UI/UX 乃至開發數位產品相關設計領域。 @Taipei City