網頁與 App 的文字配色審查
把設計稿裏的文字色與背景色填進第 8 關的取色器,立即知道能否過 AA;佔位文字、禁用態、輔助説明是最容易不合規的位置。
使用指南
顏色與對比度課是一門 17 關的交互式教程,教你看懂設計稿與 CSS 裏出現的每一種顏色寫法,並學會用可測量的標準判斷「這兩個顏色搭在一起能不能讀」。每一關給你一到三個取色器和一個具體目標——把亮度調到某個值、讓對比度過 4.5:1、找出色相相隔 120° 的三個顏色、把一對色盲者難以區分的顏色改成可區分——你拖滑桿或輸入色值,數值讀數、對比度徽章、配色輪、色盲模擬表實時更新,判定器告訴你差在哪裏。
更新於 2026-09-094 个来源约 13 分钟读完
顏色與對比度課是一門 17 關的交互式教程,教你看懂設計稿與 CSS 裏出現的每一種顏色寫法,並學會用可測量的標準判斷「這兩個顏色搭在一起能不能讀」。每一關給你一到三個取色器和一個具體目標——把亮度調到某個值、讓對比度過 4.5:1、找出色相相隔 120° 的三個顏色、把一對色盲者難以區分的顏色改成可區分——你拖滑桿或輸入色值,數值讀數、對比度徽章、配色輪、色盲模擬表實時更新,判定器告訴你差在哪裏。
課程分四段:顏色模型(RGB、HEX、HSL、HSV、OKLCH 的分量各自控制什麼,為什麼 HSL 的「亮度」和眼睛感覺到的亮度不一樣);對比度與 WCAG(相對亮度公式、4.5:1 / 3:1 / 7:1 三個門檻分別管什麼);配色(互補、三角、類似三種色輪關係);無障礙與實踐(紅綠色盲看到的世界、怎樣選一套色盲安全的配色、從一張 logo 裏統計主色)。最後一關要求你綜合前面所學,交出一套三色並通過全部檢查。
學完約 45 分鐘。面向前端開發者、設計師和任何需要給幻燈片、圖表、海報挑顏色的人;不需要美術基礎。
#RRGGBB / rgb() / hsl()。?lesson=n 的鏈接。本頁上方就是課程本體:左側目錄選關,中間拖滑桿或輸入色值,判定實時出現。
第 8 關「WCAG AA:正文至少 4.5:1」把背景固定為白色,要你把文字色調到對比度 ≥ 4.5 且不能是純黑。下面是一次嘗試記錄:
背景(固定) #FFFFFF 相對亮度 L = 1.000
嘗試 1 #3B82F6 L = 0.228 對比度 = 1.05 / 0.278 = 3.68:1
判定 ✓ AA 大字(≥ 3) ✕ AA 正文(≥ 4.5)
嘗試 2 #2563EB L = 0.153 對比度 = 1.05 / 0.203 = 5.17:1
判定 ✓ AA 大字 ✓ AA 正文 ✕ AAA 正文(≥ 7) → 通關
第 15 關「色盲安全」以橙色 #E76F51 為參考,初始的第二個顏色是綠 #8AB17D:正常視覺 ΔE ≈ 0.20 一眼可分,綠色盲模擬下降到 0.056 幾乎重合。把第二個顏色改成中等亮度的藍(如 #2563EB),模擬下 ΔE 回到 0.15 以上,且兩色對白底都 ≥ 3:1,即通關。
屏幕上每個像素由紅、綠、藍三個子像素組成,rgb(37 99 235) 就是三束光各自的強度,0 是關、255 是全亮。三者全 0 是黑,全 255 是白,相等則是灰。HEX 是同一組數的十六進制縮寫:#2563EB 裏 25 = 37、63 = 99、EB = 235,每兩位一個通道;#FFF 這種三位寫法是每位重複一次的簡寫。這套表示叫 sRGB,是網頁與絕大多數顯示器的默認色彩空間;數值和物理光強之間還有一條伽馬曲線,後面算對比度時會用到。
RGB 對機器方便,對人不直觀:想把一個藍色「調淺一點」,得同時改三個通道。HSL 換了一組座標:色相 H 是色輪上的角度(0° 紅、120° 綠、240° 藍,360° 回到紅),飽和度 S 是顏色有多「純」(0% 灰,100% 最豔),亮度 L 是有多亮(0% 黑、50% 純色、100% 白)。調淺就是拉高 L,做粉彩色就是低 S 高 L——課程第 4 關讓你親手調出一個。CSS 裏寫 hsl(221 83% 53%),與 #2563EB 是同一個顏色。
HSV(也叫 HSB)的 V 是「三通道中最大值」:V = 100% 時顏色最豔或最亮,把 S 拉到 0 得到白色而不是灰。HSL 的 L = 100% 永遠是白。設計軟件的取色器多用 HSV(一個方塊加一根色相條),CSS 只支持 HSL,兩者互相轉換沒有損失,但分量含義不同,不要把 HSV 的數字直接填進 hsl()。
HSL 的 hsl(60 100% 50%) 是純黃,hsl(240 100% 50%) 是純藍,兩者 L 都是 50%,但黃色看起來明顯更亮。因為 HSL 只是 RGB 數值的幾何重排,與人眼感知無關。OKLab / OKLCH(Ottosson,2020)在人眼實驗數據上擬合,讓 L 的相等意味着看起來一樣亮,C(彩度)與 h(色相)的變化也更均勻。CSS Color 4 已經把 oklch() 納入標準,主流瀏覽器均已支持。第 6 關要你只看 OKLCH 讀數,把一個顏色調到明度 L 在 0.68–0.72、色相在橙色區間——你會發現 HSL 的 L 讀數與它並不對應。做漸變、生成同一色相的明暗階梯、跨色相保持「一樣亮」,用 OKLCH 會穩定得多。
WCAG 定義的對比度不是任意兩個數的差,而是相對亮度之比:
其中 ,0.05 模擬環境光的反射。相對亮度 由 sRGB 三通道先做伽馬解碼再加權:
綠色權重最大(0.7152),所以同樣數值的綠看起來比藍亮得多;黑白對比度是 21:1 的上限。第 7 關讓你對着讀數手算一次,之後每一關都由頁面代算。
WCAG 2.2 的 1.4.3(AA 級)要求正文對比度 ≥ 4.5:1,大字(約 24px 常規或 18.5px 粗體)≥ 3:1;1.4.11 要求圖標、邊框、圖表等「非文字內容」也 ≥ 3:1;1.4.6(AAA 級)把正文提到 ≥ 7:1。這些不是審美標準,而是讓中度低視力用户仍能閲讀的經驗閾值,也是許多國家的法規依據。
第 9 關特意要求「過 7:1 但不用純黑」:#000 配 #FFF 是 21:1 沒有問題,但大面積純黑白容易產生眩光,設計上通常選 #1A1A1A、#24292F 這類深灰,它們仍能輕鬆超過 7:1。反過來,淺灰佔位文字 #9CA3AF 在白底上只有 2.5:1,很多網站在這裏不合規。
配色理論最基礎的部分是色相之間的角度關係:
課程的配色輪標出當前色的這三組位置;判定只看色相角度差(允許小幅誤差),飽和度與亮度可以自由調整——真實配色裏它們往往比色相更重要。
約 8% 的男性與 0.5% 的女性有某種色覺缺陷,最常見的是紅綠色盲(protanopia 缺紅、deuteranopia 缺綠),藍黃色盲(tritanopia)少見,全色盲極少。課程用 Machado 等人 2009 年的生理模型模擬:把顏色投影到缺陷者的錐細胞響應上,再換回 sRGB。同時用 OKLab 空間的歐氏距離 ΔE 量化兩個顏色「差多少」:≈ 0.02 以內幾乎不可分,≥ 0.15 一眼可分。
第 14 關讓你在三對顏色裏找出綠色盲者最難分的一對——橙 #E76F51 與綠 #8AB17D 模擬後 ΔE 只剩 0.056,而紅與青、深藍與黃因為明度差大仍然清晰;第 15 關要你修好它。可行的手段有兩種:拉開明度(色盲主要丟失色相信息,明度差始終可見)或換色相(紅/綠改成藍/橙)。圖表儘量再加形狀、紋理或直接標註數字,不要只靠顏色傳遞信息——這是 WCAG 1.4.1 的要求。
從圖片裏「提取主色」的樸素做法是統計像素:把每個像素的 RGB 各通道量化到 16 級(4096 個桶),計數、排序、取前幾個桶的平均色。課程在 canvas 上畫一個示例 logo,統計後給出按佔比排序的調色板,你點擊色塊或直接在圖上取色。真實工具(如 Vibrant.js、Material You 的動態取色)會再做聚類、剔除近白近黑、按飽和度加權,但原理相同。
最後一關綜合全部:交出三個顏色,每個對白底的對比度都 ≥ 4.5:1(可以直接做正文或按鈕文字),任意兩個之間的色相差 ≥ 60°(可分),並建議把三者的 OKLCH 明度調到相近(統一)。真實項目裏的配色決策,大致就是「可讀、可分、統一」這三條約束的交集。
#F00 與純綠 #0F0 色相相差 120°,對比度卻只有 2.9:1,並且紅綠色盲幾乎無法區分。把設計稿裏的文字色與背景色填進第 8 關的取色器,立即知道能否過 AA;佔位文字、禁用態、輔助説明是最容易不合規的位置。
第 14–15 關的色盲模擬表能直接檢查一套分類色在紅綠色盲眼裏是否仍可區分;不夠就換色相或加明度差,再補形狀與標註。
從 logo 提取主色(第 16 關的思路),用第 11–13 關的色輪關係找強調色,再用對比度關卡挑出正文色——第 17 關就是這條流程的演練。
遇到 oklch(0.7 0.15 250) 不再陌生:知道三個數分別是感知明度、彩度、色相,也知道為什麼用它做漸變比 HSL 平滑。
對比度由相對亮度決定,飽和的藍、紫、紅看起來「深」但亮度可能不低,而且和白底的比值受 +0.05 項影響。看「數值讀數」裏的對比度值,逐步降低 HSL 的 L 直到過線。
不是。所有關卡都按數值範圍判定(對比度門檻、色相角度差、ΔE 閾值),任何滿足條件的顏色都通關。
Figma、Sketch 目前的取色器仍以 HSB 為主,但 CSS 可以直接寫 oklch();課程的數值讀數面板同時給出五種寫法,複製需要的那一行即可。
Machado 2009 是學術界與主流工具(Chrome DevTools、Color Oracle)採用的模型之一,對全缺陷的模擬是可靠的近似;個體差異與弱色覺程度無法用單一矩陣覆蓋。
不會,進度只存在當前瀏覽器的 localStorage;用「分享本關」複製鏈接可以在別處從同一關繼續,但通關記錄不會帶過去。
課程全部在瀏覽器本地運行:顏色換算、對比度、色盲模擬與像素統計都是頁面內的純計算,不請求服務器;示例 logo 是頁面用 canvas 現場繪製的,不加載外部圖片;進度存在本機 localStorage。
hsl()、oklch() 的規範定義與相互轉換:https://www.w3.org/TR/css-color-4/(访问日期:2026-09-09)更新於 2026-09-09
17 關:RGB/HEX/HSL/HSV/OKLCH 的含義、WCAG 對比度、互補/三角/類似配色、色盲模擬與品牌色提取,拖滑桿即時判定
此工具尚未完整翻譯,部分內容使用源文或回退語言。
目標拖动 R、G、B 三个滑杆,把颜色调成橙色 #FF8000(R=255,G=128,B=0)。
屏幕用红、绿、蓝三种光混色(加色法):三者全开是白,全关是黑。每个通道 0–255,所以一共 256³ ≈ 1677 万种颜色。#FF8000 的意思是红光全开、绿光一半、蓝光关闭,得到橙色。判定用的是感知距离 ΔE(OKLab),不必精确到每一个数字,肉眼分不出就算通过。