Skip to content

CSS 色彩表示法:色名、16 進位與色彩函式

CSS 色彩表示法:十六進位、rgb 與 hsl

CSS 支援多種色彩表示法,常用的為色名、十六進位、RGB(A)、HSL(A)。根據需求選擇合適的表示法。

色名

直觀的用文字來描述,但缺色彩細部的調整。

css
color: red;
color: blue;
color: orange;

16 進位

# 開頭,後面接續色光三原色 (RGB) 所分成 0 ~ 255 階共 256 等分,並使用 16 進位來表示。

css
color: #ff0000;   /* 紅色 */
color: #00ff00;   /* 綠色 */
color: #0000ff;   /* 藍色 */
color: #fff;      /* 白色,縮寫 */

支援透明度

近年來瀏覽器也進步不少,亦支援 16 進位色碼的八碼寫法,多出來兩碼為透明度,數值越高透明度越低,00 表示全透明,ff 表示不透明。

css
color: #ff000080  /* 透明度 50% */
color: #00ff004d  /* 透明度 30% */

以下為轉換為 16 進位的小工具:

色彩函式

CSS 還有 函式 的色彩表示法,Away 列出一些較常見到的。

RGB

RGB 為色光三原色,其色彩的範圍在 0 ~ 255 之間。

color: rgb(R, G, B);
  • R: 0~255。例如:255
  • G: 0~255。例如:0
  • B: 0~255。例如:0

RGBA

RGB 表示法的延伸,多加了透明度。其範圍在 0~1 之間。

css
color: rgba(255, 0, 0, .5);   /* 50% 透明度的紅色 */

HSL

HSL 為色彩空間的表示法。

color: hsl(色相, 飽和度, 明度);
  • 色相: 0~359。例如:0
  • 飽和度: 0%~100%。例如:100%
  • 明度: 0%~100%。例如:50%

HSLA

HSL 表示法的延伸,多加了透明度。其範圍在 0~1 之間。

css
color: hsla(0, 100%, 50%, .5);  /* 半透明紅色 */

用自訂屬性管理色彩

css
:root {
  --brand: #2965f1;
  --text: #1f2937;
  --danger: #dc2626;
}

.btn { background: var(--brand); }

集中定義後,換色只要改一處,也方便做深淺主題切換。

透明度的兩種做法

css
/* 整個元素連同文字一起變透明 */
.a { opacity: 0.5; }

/* 只有背景半透明,文字維持清晰 */
.b { background: rgb(0 0 0 / 0.5); }

小提醒

文字與背景的對比度不足會直接影響可讀性,也是無障礙檢測的重點項目。淺色文字配淺色背景前,記得先確認對比。

常見問題

十六進位可以縮寫嗎?

可以。六碼中每兩碼相同時能縮成三碼,加上透明度的八碼同理能縮成四碼。

hsl 有什麼優勢?

它用色相、飽和度與亮度描述顏色,只要改亮度就能做出同色系的深淺變化,做主題配色比十六進位直覺得多。

透明度該用 opacity 還是帶透明度的顏色?

opacity 會讓整個元素連同內容一起變透明;帶透明度的顏色只影響那個屬性。只想讓背景半透明時,請用後者。

顏色該怎麼管理比較好?

把品牌色與語意色定義成自訂屬性,全站統一引用。日後換色只要改一處,也方便做深淺主題切換。

延伸閱讀