一個看起來錯誤的十六進位色彩混色結果,幾乎都歸因於以下三個原因之一:輸入內容的解析方式與您的預期不同、比率滑桿的位置不正確,或是 sRGB 內插背後的螢幕光線數學產生了加法結果,而您的眼睛預期的是減法結果。色彩混合器使用每通道 sRGB 線性內插來混合顏色,對於紅、綠、藍每一個通道,工具會計算 result = round(A × (1 − ratio) + B × ratio),其中比率被限制在 [0, 1] 範圍內,每個通道則被限制在 0–255 並四捨五入。這與 CSS 漸層、設計工具和多數 UI 系統使用的算術方式相同,因此輸出結果可以乾淨地貼入螢幕上的工作項目中。感覺「不對」的結果,多半是來自誤解的忠實呈現,而非工具的錯誤,修復方式就是確認上述三個原因中是哪一個在作用,然後直接在 色彩混合器 中加以處理。

how do i fix a result that looks wrong after i use mix two hex colors
如何修正看起來錯誤的十六進位色彩混色結果

為什麼十六進位混色結果看起來錯誤

混合兩個十六進位顏色後出現「錯誤」的結果,很少代表工具運作失常。它通常代表在進行混色計算之前,您的工作流程中已經發生了以下三種情況之一,而數學只是揭露了這個誤解,並未將它隱藏起來。

第一個原因是輸入格式。色彩 A 或色彩 B 的輸入方式讓解析器悄悄進行了清理,因此引擎實際混合的值並不是您輸入的值。缺少井號、多餘的空白、大寫字母,或多餘的字元,都可能悄悄改變解析器所看到的內容。這個結果就解析後的輸入而言在技術上是正確的,但並不符合您的預期,因此混色看起來不對。

第二個原因是比率滑桿。50% 的混色是每個通道配對的精確中點,而不是視覺上的平均值,也不是眼睛「看起來一半」的中點。即使稍微偏離 50%——哪怕只有一點點——也會讓結果移動得比您預期更為明顯,特別是當兩個來源顏色在某個通道上有很大的差距時。許多使用者將滑桿設為他們認為是視覺一半的位置,卻發現由於來源色相所在的位置,數學結果更接近 70/30 的分配。

第三個原因是模型不匹配。色彩混合器使用 sRGB 線性內插來混合螢幕光線,這屬於加法類型的數學,也是 CSS、設計工具和多數 UI 系統所使用的方式。如果您預期的結果是實體混合顏料或墨水(屬於減法),那麼輸出看起來就會「錯誤」,這是因為模型不同,而不是工具出錯。

在色彩混合器中修正結果

獲得正確混色的最快路徑,是從乾淨的狀態開始,依照工具的說明流程將輸入跑過一次。整個計算完全在本機瀏覽器中執行,沒有任何內容會被上傳,無需註冊,也沒有使用次數限制。

  1. 在瀏覽器中開啟色彩混合器。
  2. 在色彩 A 欄位中輸入第一個顏色,可以使用簡寫十六進位如 #f00、完整十六進位如 #3b82f6,或 rgb() 字串如 rgb(59, 130, 246)。
  3. 如果手邊沒有十六進位值,請點擊欄位旁的色塊,使用作業系統原生的選色器以視覺方式挑選顏色。
  4. 使用相同的格式規則在色彩 B 中輸入第二個顏色;解析器不區分大小寫,會忽略多餘的空白,並容許省略前導井號。
  5. 拖曳比率滑桿,設定每個顏色在混色中的比例。0% 是純 A,100% 是純 B,50% 是通道值的精確中點。
  6. 在結果面板中讀取混合後的十六進位和 rgb() 輸出。比率標籤會顯示目前的分配比例,例如「70% A / 30% B」,因此之後重現相同的組合可以得到相同的結果。
  7. 使用控制項下方的漸層條,預覽兩個顏色之間十一個等距的混色步驟,包含兩端的端點。
  8. 點擊複製,將結果的十六進位值放入剪貼簿。
  9. 如果結果看起來仍然不對,請回到步驟 2,以最簡單的形式重新輸入兩個輸入值——完整六位數小寫並帶前導井號的十六進位——以排除任何解析器的歧義。

調整比率以取得正確的顏色

如果中點感覺不對,最快的修正方式就是調整滑桿。在 0% 時,結果面板顯示純色彩 A;在 100% 時,顯示純色彩 B;在 50% 時,顯示兩個來源顏色每個通道的平均值。拖曳時結果會即時更新,因此小幅調整可以輕鬆嘗試。

背後的數學是每個通道的加權平均。對於紅、綠、藍每一個通道,工具會計算 result = round(A × (1 − ratio) + B × ratio),其中比率被限制在 [0, 1] 範圍內,每個通道則被限制在 0–255。這是多數設計工具和 CSS 漸層所使用的相同計算方式,因此輸出結果可以直接貼入任何螢幕設計系統,無需進一步轉換。

讓我們手動跑一次範例:將 #ff0000 (255, 0, 0) 與 #0000ff (0, 0, 255) 以 0.5 的比率混合,得到 R = round(255 × 0.5 + 0 × 0.5) = 128,G = round(0 × 0.5 + 0 × 0.5) = 0,B = round(0 × 0.5 + 255 × 0.5) = 128。結果是 rgb(128, 0, 128),即十六進位的 #800080——一個純粹的洋紅。如果您預期的是混濁的紫色或棕色,那麼這個數學忠實地對應加法光線混合,而不是顏料混合,這個差距是模型差異,而不是需要調整掉的錯誤。

在使用結果之前先加以確認

結果面板永遠會顯示兩個內容:一個小寫六位數的十六進位,以及一個 rgb() 字串。兩者可以精確地互相轉換,所以複製其中一個再透過轉換器貼回,應該可以無誤差地重現另一個。比率標籤永遠會顯示目前的分配(例如「70% A / 30% B」或類似形式),因此下次重新開啟工具時,相同的輸入組合與滑桿位置會產生相同的輸出。

漸層條是最快的健全性檢查工具。它會顯示兩個顏色之間十一個等距的混色步驟,包含兩端的端點。如果您的目標顏色明顯落在兩個步驟之間,您可以目測最接近的滑桿位置。如果漸層的中點看起來不像視覺上的一半,那並不是工具失靈——而是 sRGB 內插屬於加法、以螢幕光線為基礎,而非感知均勻,這是數學的特性,不是錯誤。

會導致混色偏差的格式陷阱

當輸入本應符合但結果看起來錯誤時,格式問題是最常見的原因。下方表格列出每一種可接受的格式,以及解析器容許的小變化,讓您可以確認引擎實際讀到的內容,而不是您原本打算輸入的內容。

您輸入的格式範例解析為
簡寫十六進位#f00#ff0000
簡寫十六進位,無井號f00#ff0000
完整十六進位#3b82f6#3b82f6
完整十六進位,大寫#3B82F6#3b82f6
rgb() 字串rgb(59, 130, 246)#3b82f6
含多餘空白的 rgb()rgb( 59 , 130 , 246 )#3b82f6
選色器色塊(點擊色塊)作業系統選色器回傳的任何 RGB

如果您懷疑解析器讀錯了內容,請以最簡單的支援形式——完整六位數、小寫字母、帶前導井號的十六進位——重新輸入該值,並再次拖曳滑桿。若要快速交叉檢查,HEX 轉 RGB 轉換器RGB 轉 HEX工具都可以確認往返轉換後的值是否符合您的預期。

當螢幕數學無法對應實體顏料時

有一類「看起來錯誤」的結果是色彩混合器設計上無法修正的,值得在此明確點出,讓您別再試圖用滑桿調整掉它。sRGB 線性內插以螢幕像素加法的方式混合光線,這屬於加法。真正的顏料、墨水、染料和印表機碳粉則是以減法方式結合:每種顏料會吸收部分入射光,加入的顏料越多,結果就越深、越濁。

這就是為什麼在本工具中 #ff0000 加上 #0000ff 會得到一個純粹的 #800080 洋紅,而在調色盤上實體混合紅色和藍色壓克力顏料,通常會得到一個深而低彩度的紫色或棕色。這個工具對其設計目的——螢幕設計——執行了正確的計算,無論如何調整滑桿位置、比率設定或顏色選擇,都無法將它變成顏料模型。如果您的任務是預測顏料、墨水或印刷的顏色行為,那麼以螢幕為基礎的內插是錯誤的工具,任何誠實的瀏覽器端色彩數學都無法重現減法物理。

對於螢幕上的工作——網站、應用程式、圖表、儀表板、圖示、CSS 漸層、設計權杖——sRGB 內插恰好就是您需要的數學。輸出的十六進位值可以貼入任何 CSS 檔案,在渲染裝置上呈現相同的結果,這正是本工具最佳化的目標。

運用結果建立實用的調色盤

一旦混色結果正確讀出,漸層條還能兼作快速的調色盤產生器。色彩 A 與色彩 B 之間的十一個等距步驟,本身就是一個現成的色階。如果產生的色彩配對需要作為背景上的文字,請在正式採用前先將其送入色彩對比檢查器,讓無障礙問題在設計階段就浮現,而不是到正式環境才發現。

對於希望進一步延伸色階的設計師來說,相同的每通道數學可以乾淨地串接:將色彩 A 與 50% 的中點混合,再將該結果與色彩 B 混合,就能產生一條平滑無斷層的漸變。這正是多數設計系統內部使用的工作流程,也說明了為何 sRGB 混合的中點是整個色階可靠的錨點。

若想進一步了解,請參閱如何修正看起來錯誤的字型配對結果

若想進一步了解,請參閱網頁設計的十六進位轉 RGB:權杖、CSS 與 Alpha