跳到取色器

色域完整解說:sRGB、Display P3 與超出色域的顏色

色域是螢幕或色彩空間能呈現的顏色範圍。網頁一開始建立在 sRGB 上,但現在多數手機和不少筆電都能顯示 Display P3,紅、綠、橘色明顯更鮮豔。

閱讀時間約 1 分鐘

色域是什麼

每個螢幕都是用紅、綠、藍三種光混出顏色。它能發出的最純的紅、綠、藍,構成一個三角形的三個頂點,三角形內的所有顏色就是它的色域。超出這個範圍的顏色,這個螢幕根本顯示不出來。

sRGB、Display P3 與 Rec. 2020

sRGB 是網頁的預設色彩空間,也是 2016 年以前多數螢幕的標準。HEX、rgb() 和 hsl() 描述的都是 sRGB 顏色。

Display P3 比 sRGB 多出約四分之一的顏色,主要是鮮豔的綠、紅和橘色。iPhone、iPad、Mac,以及許多 Android 手機和高階筆電都採用它。在 CSS 中可以寫成 color(display-p3 r g b),或寫成高彩度的 OKLCH 值。

Rec. 2020 的範圍更大,用於 HDR 影片,能完整涵蓋它的螢幕非常少。

範例:#ff5733
格式值
HEX
Display P3
OKLCH
Rec. 2020

超出色域的顏色會怎樣

如果 CSS 顏色超出螢幕的色域,瀏覽器只能改顯示別的顏色。最簡單的裁切是把每個通道截到上限,可能讓色相跑掉。CSS Color 4 建議改在 OKLCH 中做色域映射:保留亮度和色相,降低彩度,直到顏色落進色域為止。

PickShade 會標示所有超出 sRGB 的顏色,並顯示映射後的備援色,讓你清楚知道使用舊螢幕的人實際會看到什麼。

在 CSS 中安全使用 P3 顏色

先寫 sRGB 備援值,再寫廣色域的值;或是把鮮豔的值包在 color-gamut 媒體查詢裡。

CSS

.button {
    background: #ff5733;
    background: oklch(68% 0.24 33.7);
}

@media (color-gamut: p3) {
    .hero {
        color: color(display-p3 1 0.3 0.15);
    }
}

常見問題

怎麼知道一個顏色是否在 sRGB 範圍內?

把它貼進 PickShade。只要超出 sRGB,就會出現色域警告,並附上最接近且落在色域內的顏色。

P3 顏色在 Windows 上有效嗎?

有效,前提是螢幕涵蓋 P3,且瀏覽器能讀到顯示器的色彩描述檔。在 sRGB 螢幕上,瀏覽器會把顏色映射到 sRGB,不會出問題。

HEX 只能表示 sRGB 嗎?

是的。HEX、rgb()、hsl() 和 hwb() 描述的都是 sRGB 顏色。廣色域的顏色請用 oklch() 或 color(display-p3 ...)。

在 PickShade 中試試看

相關指南