一個基於數位 RGB 反轉建構的互補色色票表,顯示了六位數十六進制色彩的位元組對立值,方法是將每個 sRGB 通道從 255 減去,以產生一個確定性的結果。紅色 #ff0000 會變成青色 #00ffff,因為 255 減去 255、0 和 0 得到 0、255 和 255;綠色變成洋紅,藍色變成黃色,而黑色和白色則互換。色票表將每個輸入與其精確的反值、來源色塊、反值色塊,以及兩種色彩的十進制通道值配對在一起。不同於在色輪上旋轉的色相型色票表,數位 RGB 互補色色票表鎖定在 8 位元 sRGB 色塊上,因此每個十六進制代碼都會對應到一個無需近似的確定性反值。這正是 互補色尋找器 所產生的互補類型,它將「互補」一詞視為精確的位元組運算,而非知覺或藝術上的概念。

complementary color finder chart
互補色尋找器色票表:數位 RGB 參考

數位 RGB 互補色色票表的內容

一個基於位元組對位元組 RGB 反轉建構的互補色尋找器色票表,對於每個條目都包含四個可預測的欄位:輸入色塊、反值色塊、反值的小寫正規化十六進制,以及來源和結果的十進制通道值。由於該演算法將每個 sRGB 通道視為 0 到 255 之間的整數,並用 255 減去其值來取代,每個六位數十六進制代碼都會解析成恰好一個反值,期間不會有捨入、抖動或描述檔轉換。

這種格式作為快速參考非常實用,因為 sRGB 位元組範圍既小且有限:總共只有 16,777,216 個輸入。可列印或螢幕呈現的色票表可以聚焦於邊界色彩、三原色、中點不對稱性,以及混合的十六進制位數,這些共同揭示了該公式在色塊邊緣以及漸層中段的行為。值得呈現的範例包括純紅 #ff0000 反轉為青色 #00ffff、純綠 #00ff00 反轉為洋紅 #ff00ff、純藍 #0000ff 反轉為黃色 #ffff00、中灰 #808080 反轉為 #7f7f7f(因為 255 減 128 等於 127),以及像 #abcdef 這類混合輸入反轉為 #543210。

這種色票表格式也讓一個特性一目了然:反值是輸入的嚴格數學函數。兩個不同的十六進制代碼無法產生相同的反值:這個運算是一對一的,而且反轉兩次會回到原始值(255 減去 (255 減去 x) 等於 x)。這種可逆性是 RGB 互補定義的決定性特徵,當設計師希望從前景保證能回到背景時,這項特性非常有用。

如何為任何十六進制代碼找出反值

一個基於瀏覽器的 RGB 互補色色票表完全免除了算術,但仍建議遵循工具本身所使用的相同三個步驟。這是任何六位數十六進制輸入的標準工作流程。

  1. 輸入一個六位數的十六進制色彩,或使用色彩選擇器挑選一個。可以選擇性加上前導 # 來輸入或貼上代碼。色票表只接受剛好六位數的十六進制數字,因此像 #abc 這類簡寫代碼或像「tomato」這類具名色彩會被拒絕。
  2. 選擇尋找 RGB 互補色,以反轉每個 8 位元通道。色票表會將輸入解析為三個介於 0 到 255 的整數紅、綠、藍通道,然後獨立計算每個通道的 255 減去值。
  3. 複製或使用所顯示的十六進制/RGB 結果,請記得其他色彩模型對互補色的定義不同。輸出的十六進制會正規化為小寫,十進制通道會與色塊並列顯示以便驗證。

舉例來說,#ff8000 輸入為紅色 255、綠色 128、藍色 0。色票表反轉每個通道:255 減 255 等於 0,255 減 128 等於 127,255 減 0 等於 255。產生的反值是 #007fff,十進制通道為 0、127 和 255,顯示在原本的橘色色塊旁邊。想要自行編寫程式來達成此效果的設計師,可以在 為任何十六進制代碼尋找互補色的配套指南 中檢視相同的邏輯。

為何 RGB 反轉不同於其他互補定義

「互補」一詞在設計、印刷和電腦繪圖中至少有五種運作定義,而 RGB 位元組對位元組反轉只是其中之一。下表比較了最常見的幾種做法,但並未聲稱其中任何一種是普遍「正確」的。

定義 核心運算 針對 #ff0000 的典型輸出 最適用情境
RGB 位元組對位元組反轉 (sRGB) 每個 8 位元通道以 255 減去 #00ffff 螢幕 CSS 實驗、圖示色票、位元組層級配對
HSL 色相旋轉 色相加上 180 度,保留明度和飽和度 純紅為 #00ffff,但對偏色的紅色會不同 圍繞色輪的和諧設計系統
減法顏料混合 混合吸收相反波長的顏料 一個偏灰褐的色調,而非飽和的青色 傳統繪畫與實體媒材
CMYK 印刷 使用相反的製程通道權重 由 CMYK 中的 0, 100, 100, 0 衍生 印刷生產與專色配對
知覺對立 (CIELAB、Oklab) 在色域內尋找 L*a*b* 軸反轉的色彩 視覺上對立但取決於色域的色彩 注重無障礙的品牌色票

對於偏色或混合的十六進制代碼,RGB 位元組對位元組反轉常常與 HSL 色相旋轉產生分歧。像 #cc6633 這種偏橘的顏色,透過位元組反轉仍會變成 #3399cc,但它的 HSL 互補色會維持相同的中等明度與飽和度,結果更接近一個藍綠色。在 CSS 和 HTML 中作業的設計師應該了解他們的色票表代表的是哪一種定義,而這個工具會公開標示其定義,讓每個結果都能被重現。

位元組對位元組反轉的實用情境

由於反值具有確定性且可逆,在一致性與可重現性比知覺和諧更重要的作業流程中,它非常實用。

CSS 實驗與主題原型設計可以利用反值快速衍生出高對比的次要色彩,而無需從色票中挑選。依賴單一強調色的圖示集,可以透過反轉來交換前景與背景,以測試圖示在其自身的負片底色上的可讀性。資料視覺化可以使用反轉,在只指定一種品牌色的情況下,為被強調的資料系列衍生一個「互補」色彩。測試高層級的組合,例如某個圖表的輪廓在其填色長條上是否仍清晰可見,當反值只需一個點擊就能取得時,會變得更加容易。

這個色票表也是一個教學輔助工具。展示紅色變成青色、綠色變成洋紅、藍色變成黃色,能讓加法 RGB 模型變得具體;而展示 #abcdef 整齊對應到 #543210,則說明了混合十六進制位數是如何獨立反轉的。由於結果是輸入的確定性函數,相同的十六進制代碼在不同的作業階段、裝置和瀏覽器中,都會回傳相同的反值。

反值的無障礙與對比限制

位元組對位元組的 RGB 反轉並不保證無障礙對比。在 sRGB 位元組軸上完全對立的兩種色彩,仍然可能在正常或大型文字的對比比例上不及格,特別是當來源色的明度偏高或偏低時。設計師應該將反值視為起始色票,而非最終的無障礙解決方案。

驗證任何候選配對的可靠方式,是將來源與反值輸入到能直接評估 WCAG 2.2 比例的 色彩對比檢查器 中。根據 W3C CSS Color 4 規格以及 MDN 的 rgb() 參考資料,對比比例是根據 sRGB 規格所定義的相對亮度來計算的,而非單純的通道反轉,而 CSS Color 4 sRGB 函式 文件說明了將 sRGB 位元組轉換為亮度的線性化步驟。位元組對位元組色票表應該明確指出,這個線性化步驟並不在其輸出之中。

位元組對位元組的 RGB 色票表同樣不適用於印刷生產、寬色域色彩、色彩管理資產,或知覺型色票設計。印刷作業流程應參考適當的具名色彩空間與量測方式,而非將數位反轉視為通用的互補色。針對品牌工作,使用 CIELAB 或 Oklab 的知覺配對更接近人眼實際感知對立的方式,而 W3C CSS Color 4 規格也探討了當需要更高精確度時,超越 sRGB 的色彩空間。這個色票表快速、透明且可重現;但任何以此建立的配對,其最終可讀性仍必須在實際使用的介面中加以確認。

如果您正在權衡選項,適用於嚴格 CSS 十六進制的 Hex 轉 RGB 轉換器替代方案 對此有詳細說明。