朱)超厲害介面設計 巨匠電腦分享色彩透明度標示方式
在繪製介面時,調整顏色的透明度 (transparent) 是一個很常用的技巧,好處在於:
1.減少灰階顏色定義
2.維持介面顏色的一致性
早期網頁設計還沒支持透明度的屬性時,設計師要自己調色,來控制顏色的明暗,所以會發現許多網站關於灰階顏色的定義,基本上都用過一輪,但其實這樣的方式比較沒效率,後續要維護也會比較麻煩。
在app的開發上,灰階的顏色通常會使用在字體與線條上,為了讓字體的閱讀更加舒服,內文字體不會使用純黑色(#000000),而會使用「灰色」來代替,但實色的灰色會因為背景色的不同,會讓app文字內容的易讀性有所差異。
上圖大概就可以知道為什麼要用帶透明度的黑色來取代實色的灰色,因為帶透明度的黑色,在背景稍深時,還是有比較好的閱讀性,如果是實色,字體就會被整個畫面給吃掉,不易閱讀。當然也可以多定義一個新的灰色,但那就是要多記一個顏色。
而在 Google material design 裡 Typographic 有提到文字透明度的設定說明:
第二段提到,建議文字顏色對比至少 4.5:1 建議是 7:1,最後定義出 54% black 與 87% black,雖然我有試著去算出這兩個數字,但最後還是找不到一個合理的算法(求解)。(百分比可以依需求自己設定,這邊只是舉 google 的例子,但我還是好奇這兩個數字是怎麼算出來的)。
2015/04/28補充:關於 4.5:1與7:1 的數值可以參考w3c的規範
2015/08/12補充:這篇文章被轉載,這邊再補充一下對比值的檢查工具
至於透明度定義好,要怎麼提供給工程師,說明如下:
iOS
iOS 在給顏色的值,可以直接給 alpha(α) 值,也就是像是網頁 css rgba 的標式方式,最後的 α 值,給 0~1 之間 0 代表完全透明,1 代表完全不透明,因此在 iOS 的標示上不會有什麼問題。
Android
Android 就比較麻煩,因為要給 hex 的色號,之前花了一點時間理解透明度的 hex 換算方式;hex全名是 hexadecimal,也就是 16 進位,這是除了 rgba 外,另一個比較常見的方式,在網頁設計上也經常在使用(在色號上會給#符號的,就是使用hex的方式給色)。
通常不指定透明度時,給的 hex 值不含井字號會有六碼:例:「#aabbcc」,aa 用來控制紅色、bb 用來控制綠色、cc 用來控制藍色,如果要補上透明度,就要在 aa之前加上透明度的 hex 值。
之前為了透明度的問題,手動算換了 16 進位的透明度值,以下是 rgba 跟 hex 的概略的換算方式(不想算數學就直接跳到表格,因為算的事情交給電腦處理就好):
但後來才發現有人整理好了不同透明度對應的 hex 值。– stackoverflow,如下表:
- 0% – 00
- 5% – 0D
- 10% – 1A
- 15% – 26
- 20% – 33
- 25% – 40
- 30% – 4D
- 35% – 49
- 40% – 66
- 45% – 73
- 50% – 80
- 55% – 8C
- 60% – 99
- 65% – A6
- 70% – B3
- 75% – BF
- 80% – CC
- 85% – D9
- 90% – E6
- 95% – F2
- 100% – FF
所以如果要提供帶有透明度的 hex 值,就直接在 hex 值上的最前面,加上透明度的 hex 值就行了。在標示給工程師的文件中,就可以直接提供帶有透明度的 hex 色碼,例:「#cc000000」,我想工程師看到你如此貼心,應該也會挺開心的。
結綸
這篇的重點,其實是在強調,在繪製 app 時,字體與線條的線色盡量使用帶有透明度的黑色,而不要直接指定實色的灰色(如果是要那種紅底綠線、藍底黃色的特殊需求,不在此討論範圍)。
這也是我之前在做 app 時,因為定義太多不同的灰色,常常困擾我的問題,有時我也搞不清楚那個背景要用那個灰色,所以到最後每個位置的灰色定義都不一樣,維護上也就更加麻煩,你會發現工程師會一直跑來問你這個字體要什麼顏色…。
而背景色,建議還是以實色為主,因為每個 app 都會定義自己的主、副色,背景色如果用有透明度的顏色,不小心的話,有時會影響主色與副色的使用,但這是依 app 的需求取捨。
上述的說明,是基於白色的背景做為說明,如果是以深色的背景為主,那可以用白色帶透明度的字體顏色也是一樣的效果。
巨匠電腦設計了手機APP設計課程,教你App開發與應用、使用者介面設計等等,快來巨匠電腦輕鬆學!
文章與圖片出處: https://goo.gl/JaaM8O
想要學: 手機APP課程