alltools.one
Design
2025-07-07
7 min
alltools.one Team
ColorHEXRGBHSLCSSDesign

色彩格式詳解:HEX、RGB、HSL 轉換指南

螢幕上的每個像素都由數字定義。但同一個顏色可以用多種格式表示 — HEX、RGB、HSL、HSB 等等。瞭解這些格式以及何時使用每一種,能讓你成為更高效的開發者和設計師。

色彩模型

RGB(紅、綠、藍)

RGB 是一種基於螢幕運作原理的加法色彩模型。每個像素都是紅、綠、藍三種光以不同強度組合而成的。

color: rgb(59, 130, 246);       /* 純藍色 */
color: rgba(59, 130, 246, 0.5); /* 50% 透明藍色 */

每個通道的範圍從 0(無)到 255(最大強度):

  • rgb(0, 0, 0) = 黑色(無光)
  • rgb(255, 255, 255) = 白色(全部光線)
  • rgb(255, 0, 0) = 純紅色

適用場景:程式化色彩操作、畫布運算、影像處理。RGB 直接對應硬體,使計算更加直觀。

HEX(十六進位)

HEX 就是用十六進位表示法寫的 RGB。每對字元代表一個通道(00-FF):

color: #3B82F6;   /* 與 rgb(59, 130, 246) 相同的藍色 */
color: #3B82F680; /* 含 50% 透明度(8 位數十六進位) */

轉換是直接的:3B = 59、82 = 130、F6 = 246。

簡寫:當每對數字相同時,可以縮寫:#AABBCC#ABC

適用場景:CSS 樣式表(最常見的格式)、設計交付、品牌規範。HEX 簡潔且被廣泛理解。

HSL(色相、飽和度、明度)

HSL 以人類感知的方式表示顏色。不是混合光通道,而是透過屬性來描述顏色:

  • 色相:色輪上的角度(0-360°)。0° = 紅色、120° = 綠色、240° = 藍色
  • 飽和度:顏色的鮮豔程度(0% = 灰色、100% = 完全飽和)
  • 明度:顏色的明暗程度(0% = 黑色、50% = 純色、100% = 白色)
color: hsl(217, 91%, 60%);       /* 同樣的藍色 */
color: hsla(217, 91%, 60%, 0.5); /* 含透明度 */

適用場景:建立色彩調色盤、程式化調整顏色(例如透過調整明度來建立懸停狀態)、無障礙色彩設計。HSL 是人類思考色彩時最直覺的格式。

HSB/HSV(色相、飽和度、亮度/數值)

HSB 與 HSL 類似,但對亮度的定義不同。在最大亮度時,你得到純色;在最小亮度時,你得到黑色。這個模型被 Figma、Sketch 和 Photoshop 等設計工具使用。

與 HSL 的主要區別:在 HSL 中,明度 50% 產生純色。在 HSB 中,亮度 100% 產生純色。這使得 HSB 在某些任務中更直覺,但在 CSS 中較不實用(CSS 原生不支援 HSB)。

格式之間的轉換

格式之間的轉換涉及簡單的數學運算。以下是主要的對應關係:

HEX 轉 RGB

將十六進位字串分成成對字元,然後將每對轉換為十進位:

#3B82F6 → 3B=59, 82=130, F6=246 → rgb(59, 130, 246)

RGB 轉 HSL

演算法將 RGB 值正規化到 0-1,找到最大和最小通道,然後根據哪個通道為主來計算色相,從範圍計算飽和度,從平均值計算明度。

與其手動實作這些轉換,不如使用我們的色彩轉換器即時在任何格式之間轉換。

實際應用

使用 HSL 建立色彩調色盤

HSL 非常擅長產生一致的調色盤。保持色相不變,調整飽和度和明度:

:root {
  --blue-100: hsl(217, 91%, 95%);  /* 最淺 */
  --blue-200: hsl(217, 91%, 85%);
  --blue-300: hsl(217, 91%, 75%);
  --blue-400: hsl(217, 91%, 65%);
  --blue-500: hsl(217, 91%, 60%);  /* 基色 */
  --blue-600: hsl(217, 91%, 50%);
  --blue-700: hsl(217, 91%, 40%);
  --blue-800: hsl(217, 91%, 30%);
  --blue-900: hsl(217, 91%, 20%);  /* 最深 */
}

這種方法保證了感知上一致的漸進步階。想手動建立完整的調色盤?我們的色彩調色盤產生器能自動完成這個過程。

懸停與聚焦狀態

使用 HSL,建立互動狀態變得輕而易舉:

.button {
  background: hsl(217, 91%, 60%);
}
.button:hover {
  background: hsl(217, 91%, 55%); /* 深 5% */
}
.button:active {
  background: hsl(217, 91%, 50%); /* 深 10% */
}

無障礙與對比度

WCAG 2.1 要求一般文字的最低對比度為 4.5:1,大型文字為 3:1。HSL 中的明度分量讓你能直覺地確保足夠的對比度:

  • 淺色背景(明度 > 90%)搭配深色文字(明度 < 30%)效果好
  • 深色背景(明度 < 20%)搭配淺色文字(明度 > 80%)效果好

現代 CSS 色彩函式

CSS 現在支援強大的色彩操作函式:

/* 相對色彩語法(CSS Color Level 4) */
.element {
  --base: hsl(217 91% 60%);
  background: hsl(from var(--base) h s calc(l - 10%));
}

/* oklch - 感知均勻的色彩空間 */
color: oklch(0.7 0.15 250);

oklch 格式正逐漸被採用,因為它在感知上是均勻的 — 相等的數值變化產生相等的感知變化,不像 HSL 中 10% 的明度變化在不同色相值下看起來不同。

常見問題

在 CSS 中應該使用哪種色彩格式?

對大多數專案來說,簡單顏色使用 HEX,需要建立變化或程式化操作顏色時使用 HSL。HEX 是最精簡且最廣泛認知的格式。HSL 在建立色彩系統時更具可讀性。現代 CSS 支援所有格式,可以互換使用。

HSL 和 HSB 有什麼區別?

HSL 和 HSB 都使用色相和飽和度,但它們對亮度的定義不同。在 HSL 中,明度 0% 是黑色、50% 是純色、100% 是白色。在 HSB 中,亮度 0% 是黑色、100% 是純色(單靠亮度無法達到白色)。CSS 原生支援 HSL;HSB 主要用於 Figma 和 Photoshop 等設計工具。

相關資源

Published on 2025-07-07
Color Formats Explained: HEX, RGB, HSL Conversion Guide | alltools.one