CSS <color> 자료형: 색상

CSS <color> 자료형: 색상

Baseline넓은 지원

모든 주요 브라우저가 지원하는 기능입니다.

CSS <color> 자료형은 색상을 표현합니다. <color>는 자신과 그 뒤의 배경을 어떻게 합성해야 하는지 결정하는 알파 채널 투명도 값도 포함할 수 있습니다.

<color> 값의 정의는 명확하지만, 실제로 출력되는 색상은 기기마다 (간혹 크게) 차이가 날 수 있습니다. 대부분의 출력 장치는 “캘리브레이션”이라고 부르는 색 보정 과정을 거치지 않으며, 장치의 현재 색 프로필을 브라우저가 지원하지 않을 수도 있기 때문입니다.

구문

/* 색상 키워드 */
rebeccapurple
aliceblue

/* RGB 16진수 */
#f09
#ff0099

/* RGB (빨강, 초록, 파랑) */
rgb(255 0 153)
rgb(255 0 153 / 80%)

/* HSL (색조, 채도, 밝기) */
hsl(150 30% 60%)
hsl(150 30% 60% / 80%)

/* HWB (색조, 백색, 흑색) */
hwb(12 50% 0%)
hwb(194 0% 0% / 0.5)

/* LAB (밝기, A축, B축) */
lab(50% 40 59.5)
lab(50% 40 59.5 / 0.5)

/* LCH (밝기, 채도, 색조) */
lch(52.2% 72.2 50)
lch(52.2% 72.2 50 / 0.5)

/* Oklab (밝기, A축, B축) */
oklab(59% 0.1 0.1)
oklab(59% 0.1 0.1 / 0.5)

/* Oklch (밝기, 채도, 색조) */
oklch(60% 0.15 50)
oklch(60% 0.15 50 / 0.5)

/* 상대적 색상 */
/* HSL 색조 변경 */
hsl(from red 240deg s l)
/* HWB 알파 채널 변경 */
hwb(from green h w b / 0.5)
/* LCH 밝기 변경 */
lch(from blue calc(l + 20) c h)

/* light-dark */
light-dark(white, black)
light-dark(rgb(255 255 255), rgb(0 0 0))

<color> 자료형은 아래 구문들 중 하나로 지정합니다.

currentcolor 키워드

currentcolor 키워드는 요소의 CSS color 속성이 가진 값을 나타냅니다. 이 키워드를 사용하면 기본 값에서는 color의 영향을 받지 않는 속성들의 색도 color의 값으로 맞출 수 있습니다.

currentcolorcolor 속성의 값으로 사용한 경우에는 부모에게서 상속하는 color 값을 가리키게 됩니다.

<div class="box">
  파란 색 텍스트입니다.
  <div class="hr"></div>
  위의 가로줄과 주위 테두리의 색도 파란 색이어야 합니다.
</div>
.box {
  color: blue;
  border: 1px dashed currentColor;
}

.hr {
  background: currentColor;
  height: 9px;
}

불러오는 중...

색상 성분 제외하기

구형 쉼표 구분 구문을 사용하는 경우가 아니라면, 모든 CSS 색상 함수의 성분에는 none 키워드를 사용해서 성분을 뺄 수 있습니다.

색상 보간에서 none 키워드를 사용하면 일부 색상 성분만 보간하고 나머지는 유지하고 싶을 때 유용합니다. 보간 밖에서 none 키워드를 사용할 경우 적절한 단위의 0, 즉 0, 0%, 0deg 등으로 해석됩니다.

/* 같은 색 */
color: oklab(50% none -0.25);
color: oklab(50% 0 -0.25);

/* 같은 색 */
background-color: hsl(none 100% 50%);
background-color: hsl(0deg 100% 50%);

보간

색의 보간은 그레이디언트, 트랜지션, 애니메이션에서 발생합니다.

<color> 값의 보간 시 우선 주어진 색공간으로의 변환을 먼저 수행하고, 계산 값 각각의 성분을 선형 보간합니다. 트랜지션과 애니메이션에서의 보간 속도는 이징 함수가 결정합니다. 보간 색공간은 Oklab이 기본이지만, 몇몇 색 관련 함수 표기법에서는 <color-interpolation-method>로 재설정할 수 있습니다.

보간에서 성분 제외하기

같은 색공간에서

보간 색공간에 속하는 두 색을 보간할 때, 한 색에서 제외된 성분은 다른 색의 해당 성분으로 대체됩니다. 예를 들어, 아래의 두 표현식은 같은 색을 나타냅니다.

color-mix(in oklch, oklch(none 0.2 10), oklch(60% none 30))
color-mix(in oklch, oklch(60% 0.2 10), oklch(60% 0.2 30))

두 색 모두에서 제외된 성분의 경우 보간 밖에서 해당 성분에 none 키워드를 사용한 것과 같이, 즉 적절한 0 값으로 취급합니다.

다른 색공간에서: 유사 성분

어느 한 색의 색공간이 보간 색공간과 다르다면, 그 색의 누락된 성분은 색공간 변환 후 같은 범주에 속한 유사 성분으로 이전됩니다. 유사 성분의 범주는 다음과 같습니다.

범주유사 성분
빨강R, X
초록G, Y
파랑B, Z
밝기L
채도C, S
색조H
aa
bb

예를 들어…

  • color(xyz 0.2 0.1 0.6)X (0.2) 성분은 rgb(50% 70% 30%)R (50%) 성분과 유사합니다.
  • hsl(0deg 100% 80%)H (0deg) 성분은 oklch(80% 0.1 140)H (140) 성분과 유사합니다.

Oklch를 보간 색공간으로 사용하고 아래의 두 색을 보간하는 경우를 생각해 보겠습니다.

lch(80% 30 none)
color(display-p3 0.7 0.5 none)

보간 절차는 다음과 같습니다.

  1. 두 색의 제외된 성분을 0 값으로 대체합니다.
    lch(80% 30 0)
    color(display-p3 0.7 0.5 0)
  2. 두 색 모두 보간 색공간으로 변환합니다.
    oklch(83.915% 0.0902 0.28)
    oklch(63.612% 0.1522 78.748)
  3. 변환된 두 색의 성분 중 어느 것이라도 원래 색에서 제외된 성분과 같은 범주에 속한다면, 해당 성분을 다시 제외합니다.
    oklch(83.915% 0.0902 none)
    oklch(63.612% 0.1522 78.748)
  4. 한 쪽의 제외된 성분을 다른 쪽의 성분 값으로 대체합니다.
    oklch(83.915% 0.0902 78.748)
    oklch(63.612% 0.1522 78.748)

접근성

색을 구분하기 힘든 사용자도 존재하므로 WCAG 2.2 권고안은 특정 메시지나 동작, 결과를 색만으로 나타내지 않도록 안내하고 있습니다.

명세

CSS Color Module Level 4

브라우저 호환성

MDN browser-compat-data
데스크톱모바일
iOSAndroid
SafariChromeFirefoxSafariSafari WebViewChromeAndroid WebViewFirefoxSamsung Internet
<color>
color() (Profiled color values)
Mix <percentage> and <number> in parameters
Relative color() syntax
color-mix()
contrast-color()
currentcolor keyword
hsl() (HSL color model)
Alpha parameter
Mix <percentage> and <number> in parameters
Relative HSL colors
Space-separated parameters
hwb() (HWB color model)
Mix <percentage> and <number> in parameters
Relative HWB colors
lab() (Lab color model)
Mix <percentage> and <number> in parameters
Relative Lab colors
lch() (LCH color model)
Mix <percentage> and <number> in parameters
Relative LCH colors
light-dark()
<named-color>
rebeccapurple
transparent
oklab() (Oklab color model)
Mix <percentage> and <number> in parameters
Relative Oklab colors
oklch() (OKLCH color model)
Mix <percentage> and <number> in parameters
Relative Oklch colors
rgb() (RGB color model)
Alpha parameter
Float values in parameters
Mix <percentage> and <number> in parameters
Relative RGB colors
Space-separated rgb() parameters
RGB hexadecimal notation (#RRGGBB, #RGB, …)
RGBA hexadecimal notation (#RRGGBBAA, #RGBA)
<system-color>
AccentColor and AccentColorText
Mark, MarkText, ButtonBorder

마지막 수정:

CC BY-SA 4.0 unless otherwise noted. See LICENSE.