tools / color
color/
HEX、RGB、HSL、OKLCH 互轉、取色,並計算與黑白的 WCAG 對比度。
預覽
格式
| HEX | |
|---|---|
| RGB | |
| HSL | |
| OKLCH |
CSS 變數
對比度(WCAG 2.x)
| 白底 | Aa 範例文字 |
|---|---|
| 黑底 | Aa 範例文字 |
常見問題
色彩輸入框支援哪些寫法,可以直接寫 red 這樣的色彩名稱嗎
不能寫色彩名稱,會顯示「無法辨識的格式」。支援的寫法有 HEX(3、4、6、8 位數,# 可省略)、rgb() / rgba()、hsl() / hsla() 和 oklch(),參數用逗號分隔,或用空白分隔、再用斜線寫透明度(如 rgb(255 0 0 / 50%))都可以,HSL 的色相可以帶 deg、rad、grad、turn 單位。輸出固定為 HEX、RGB、HSL、OKLCH 四種,沒有 CMYK 和 HSV。
8 位數 HEX 的透明度在前面還是後面,80 為什麼變成 0.502
在最後兩位,寫法是 #RRGGBBAA,和 CSS 一致。Android 常見的 #AARRGGBB 把透明度放在最前面,貼上之前要先把前兩位移到最後。兩位十六進位只有 256 階,所以 80(十進位 128)換算成 0.502,不是整齊的 0.5;反過來輸入透明度 0.5,輸出的 HEX 結尾是 80。
數值超出範圍會怎樣,OKLCH 顯示「超出 sRGB 色域」是什麼意思
超出 sRGB 能顯示的範圍時,工具會把紅、綠、藍三個色版各自截到範圍之內,輸出的是截斷後的顏色。rgb() 裡超過 255、HSL 的飽和度或亮度超過 100% 會直接截斷,不會提示;只有 OKLCH 會顯示「超出 sRGB 色域」,因為它能表示比 sRGB 更鮮豔的顏色。這時輸出裡的 OKLCH 是依截斷後的顏色重新計算的,和你輸入的數值不同。在廣色域螢幕上,直接在 CSS 裡寫 oklch() 可能會比這裡的預覽更鮮豔。
對比度是怎麼算的,可以算任意兩個顏色之間的嗎
本工具只計算輸入的顏色與純白、純黑之間的對比度,也就是把它當作文字色,分別放在白底和黑底上,無法指定其他背景色。演算法依 WCAG 2.x:先把 sRGB 各色版轉成線性值,再依 0.2126、0.7152、0.0722 加權得到相對亮度 L,對比度 =(較亮的 L + 0.05)÷(較暗的 L + 0.05)。任意兩個其他顏色之間,用同一個公式自己計算即可。
AA、AAA 和「大型文字」是什麼意思
AA 和 AAA 是 WCAG 對文字對比度的兩個合規等級,AAA 更嚴格。一般文字要求 AA 達到 4.5 : 1、AAA 達到 7 : 1,大型文字的 AA 是 3 : 1、AAA 是 4.5 : 1,工具會對每一項標示「通過」或「不通過」。「大型文字」指 18pt(約 24px)以上,或 14pt(約 18.7px)以上的粗體。做網頁時通常以 AA 為目標。
半透明顏色的對比度怎麼算
先依不透明度把顏色疊到背景上,再計算對比度。「白底」那一行疊在純白上,「黑底」那一行疊在純黑上,所以同一個半透明顏色在兩行裡實際參與計算的顏色並不相同。頁面裡的實際背景如果不是純白或純黑,結果就會不同,需要自行再確認。
取色器可以選半透明的顏色嗎
不行。取色器是瀏覽器內建的控制項,只能選不含透明度的 6 位數 HEX 顏色。用它選色後,輸入框會被換成 #rrggbb,原本的透明度就會消失;要半透明,請直接在輸入框裡寫 8 位數 HEX 或 rgb(255 0 0 / 50%)。輸入框裡是半透明顏色時,取色器也只會顯示它不透明的部分。
「CSS 變數」那幾行怎麼用
複製後放進 :root 樣式裡就能用。四行分別是 HEX、以空白分隔的 R G B 三個數、H S L 三個值,以及完整的 oklch()。其中 --color-rgb 和 --color-hsl 不含透明度,方便寫成 rgb(var(--color-rgb) / 50%) 這樣臨時調整透明度,這種空白加斜線的寫法需要較新的瀏覽器。顏色本身帶有透明度時,只有 --color 和 --color-oklch 會包含它。