์ต์ CSS ์์ ํจ์: rgba(), hsl(), oklch() ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์
์ต์ CSS ์์ ํจ์: rgba(), hsl(), oklch() ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์
CSS ์์ ํจ์๋ ๊ทน์ ์ผ๋ก ๋ฐ์ ํ์ต๋๋ค. ํ๋ hex, rgb(), hsl() ์ค์์ ์ ํํ๋ ๊ฒ์ด ์ด์ ๋ ๊ฐ๋ฐ์์๊ฒ ์์ ํํ, ๋ณด๊ฐ ๋ฐ ์ ๊ทผ์ฑ์ ๋ํ ์ ๋ก ์๋ ์ ์ด๊ถ์ ์ ๊ณตํ๋ ํ๋ถํ ์ ๊ณต๊ฐ๊ณผ ์กฐ์ ํจ์์ ์ํ๊ณ๊ฐ ๋์์ต๋๋ค.
์ด ๊ฐ์ด๋๋ 2026๋ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ฃผ์ CSS ์์ ํจ์๋ฅผ ์ต์ํ ๊ฒ๋ถํฐ ์ต์ฒจ๋จ๊น์ง ๋ค๋ฃน๋๋ค.
RGB์ RGBA: ์ฃผ๋ ฅ ํจ์
rgb() ํจ์๋ ๋นจ๊ฐ-์ด๋ก-ํ๋ ๊ฐ์ฐ ์์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์์์ ์ ์ํฉ๋๋ค. CSS1๋ถํฐ CSS์ ์ผ๋ถ์์ผ๋ฉฐ, ์ง๊ธ๊น์ง ๋ง๋ค์ด์ง ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค.
/* ๋ ๊ฑฐ์ ์ผํ ๊ตฌ๋ถ ๊ตฌ๋ฌธ */
color: rgb(255, 0, 0);
color: rgba(255, 0, 0, 0.5);
/* ์ต์ ๊ณต๋ฐฑ ๊ตฌ๋ถ ๊ตฌ๋ฌธ (CSS Color Level 4) */
color: rgb(255 0 0);
color: rgb(255 0 0 / 0.5);
/* ๋ฐฑ๋ถ์จ ๊ฐ */
color: rgb(100% 0% 0%);
์ต์ RGB์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ
CSS Color Level 4๋ ๋ ๊ฐ์ง ์ค์ํ ๊ฐ์ ์ฌํญ์ ๋์ ํ์ต๋๋ค:
- ์ผํ ๊ตฌ๋ถ ๋์ ๊ณต๋ฐฑ ๊ตฌ๋ถ โ
rgb()ํจ์๊ฐ ์ด์ ๊ณต๋ฐฑ์ด๋ ์ฌ๋์๋ก ๊ตฌ๋ถ๋ ๊ฐ์ ํ์ฉํฉ๋๋ค - ํตํฉ๋ ์ํ ๊ตฌ๋ฌธ โ
rgba()๋ณ์นญ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ง๋ง(์ฌ์ ํ ์ง์๋จ).rgb()๊ฐ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ ์ฑ๋์ ํ์ฉํฉ๋๋ค
์ด ์ต์ ๊ตฌ๋ฌธ์ 2020๋
์ดํ ์ถ์๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค. ์ ํ๋ก์ ํธ์์๋ ์ต์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๊ณ rgba() ๋ณ์นญ์ ์์ ํ ๊ฑด๋๋ฐ์ธ์.
RGB ์ฑ๋
๊ฐ RGB ์ฑ๋์ ๋ค์์ ํ์ฉํฉ๋๋ค:
- 0์์ 255๊น์ง์ ์ ์
- 0%์์ 100%๊น์ง์ ๋ฐฑ๋ถ์จ
- ๋๋ฝ๋ ์ฑ๋์ ๋ํ
noneํค์๋ (CSS Color Level 4)
none ํค์๋๋ ์์์ ๋ณด๊ฐํ ๋ ์ ์ฉํฉ๋๋ค โ ๋ธ๋ผ์ฐ์ ์๊ฒ ํน์ ์ฑ๋์ ๋ณด๊ฐํ์ง ์๋๋ก ์ง์ํฉ๋๋ค.
HSL๊ณผ HSLA: ์ง๊ด์ ์ธ ์์ ์ ์ด
HSL์ ์์(Hue), ์ฑ๋(Saturation), ๋ช ๋(Lightness)๋ฅผ ์๋ฏธํฉ๋๋ค. ์ธ๊ฐ์ด ์์์ ๋ํด ์๊ฐํ๋ ๋ฐฉ์์ ์์ฐ์ค๋ฝ๊ฒ ๋งคํ๋๋ ์ํตํ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
/* H๋ ์์ ๊ฐ๋(0-360), S๋ ์ฑ๋(0-100%), L์ ๋ช
๋(0-100%) */
color: hsl(0 100% 50%); /* ์์ ๋นจ๊ฐ */
color: hsl(0 100% 50% / 0.5); /* 50% ๋ถํฌ๋ช
๋์ ๋นจ๊ฐ */
/* ๋จ์๊ฐ ์๋ ์์ ๊ฐ๋ */
color: hsl(0deg 100% 50%);
color: hsl(0rad 100% 50%);
color: hsl(0grad 100% 50%);
color: hsl(0turn 100% 50%);
์์ ๊ฐ๋ ์ฐธ์กฐ
| ์์ | ์์๋ช
| Hex |
|------|----------|----------|
| 0 | ๋นจ๊ฐ | #FF0000 |
| 30 | ์ฃผํฉ | #FF8000 |
| 60 | ๋
ธ๋ | #FFFF00 |
| 120 | ์ด๋ก | #00FF00 |
| 180 | ์ฒญ๋ก | #00FFFF |
| 240 | ํ๋ | #0000FF |
| 300 | ์ํ | #FF00FF |
HSL์ ๋ช ๋๋ ์ฑ๋ ์ฑ๋๋ง ๋ณ๊ฒฝํด๋ ์ผ๊ด๋ ์๊ฐ์ ๋ณํ์ ์์ฑํ๋ฏ๋ก ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์์ ํ๋ ํธ๋ฅผ ์์ฑํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํ ์ ํ์ ๋๋ค.
HWB: ํฐ์๊ณผ ๊ฒ์ ์์ผ๋ก ํผํฉํ๊ธฐ
HWB(์์, ๋ฐฑ์๋, ํ์๋)๋ HSL์ ๋ ์ง๊ด์ ์ธ ๋์์ ๋๋ค. ์์์ ์ ํํ ๋ค์, ๋ฐฑ์๋์ ํ์๋๋ฅผ ์ถ๊ฐํ์ฌ ํดํธ์ ์ ฐ์ด๋๋ฅผ ๋ง๋ญ๋๋ค.
color: hwb(0 0% 0%); /* ์์ ๋นจ๊ฐ */
color: hwb(0 40% 0%); /* ํดํธ๋ ๋นจ๊ฐ (ํฐ์ ์ถ๊ฐ) */
color: hwb(0 0% 40%); /* ์
ฐ์ด๋๋ ๋นจ๊ฐ (๊ฒ์ ์ถ๊ฐ) */
color: hwb(0 20% 20%); /* ํค (ํฐ์ + ๊ฒ์ ) */
HWB๋ ํ ๊ฐ์ง ํน์ ์ฌ์ฉ ์ฌ๋ก์์ HSL๋ณด๋ค ๊ฐ๋จํฉ๋๋ค: ๋ธ๋๋ ์์์ ํดํธ์ ์ ฐ์ด๋ ๋ณํ์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ฑ๋ ๊ณก์ ์ ๋ํด ์๊ฐํ ํ์๊ฐ ์ ํ ์์ต๋๋ค โ ๊ทธ์ ํฐ์์ด๋ ๊ฒ์ ์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์: HWB๋ ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค (Chrome 101+, Firefox 96+, Safari 15+).
LAB์ LCH: ์ง๊ฐ์ ์ผ๋ก ๊ท ์ผํ ๊ณต๊ฐ
LAB(๋ช ๋, A์ถ, B์ถ)์ LCH(๋ช ๋, ์ฑ๋, ์์)๋ ์ง๊ฐ์ ์ผ๋ก ๊ท ์ผํ ์ ๊ณต๊ฐ์ ๋๋ค. ์ด๋ ๋ ์์ ๊ฐ ์ฌ์ด์ ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ๊ฐ ์ธ์ง๋๋ ์๊ฐ์ ์ฐจ์ด์ ์ผ์นํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค โ RGB์ HSL์ ์ด๋ฅผ ํ ์ ์์ต๋๋ค.
color: lab(50% 50 0); /* ์ค๊ฐ ๋นจ๊ฐ */
color: lch(50% 50 0); /* ์ํตํ ํํ์ ๋์ผ ์์ */
์ง๊ฐ์ ๊ท ์ผ์ฑ์ด ์ค์ํ ์ด์ :
- ๊ทธ๋ผ๋ฐ์ด์ โ LAB ๋๋ LCH์์ ๋ณด๊ฐํ๋ฉด RGB ๊ทธ๋ผ๋ฐ์ด์ ์ด ์์ฑํ๋ ์น์นํ "์งํ ์์ญ" ์์ด ๋ถ๋๋ฝ๊ณ ์์ฐ์ค๋ฌ์ด ์ ํ์ด ์์ฑ๋ฉ๋๋ค
- ์์ ์ฐจ์ด ์ธก์ โ Delta E(์ง๊ฐ์ ์ฐจ์ด ์ธก์ )๋ LAB ๊ณต๊ฐ์์ ์๋ฏธ๊ฐ ์์ต๋๋ค
- ์ ๊ทผ์ฑ โ ์ง๊ฐ์ ๊ท ์ผ์ฑ์ ์๊ฐ ๊ฒฐํจ์ด ์๋ ์ฌ์ฉ์๊ฐ ์์์ ์ด๋ป๊ฒ ์ธ์ํ ์ง ์์ธกํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค
์ ํ ์ฌํญ: LAB์ LCH๋ sRGB ์์ญ์ ๋ฒ์ด๋ ์์์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์์ sRGB ํ๋ฉด์์ ํ์๋ ๋ ์๋ฆฌ์ง๋ง, ๋ ๋์ ์์ญ์ ๋์คํ๋ ์ด(DCI-P3, Rec. 2020)์์๋ ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์: Chrome 111+, Firefox 113+, Safari 15+์์ ์ง์๋ฉ๋๋ค. IE ๋๋ ๋ ๊ฑฐ์ Edge ์ง์์ ์์ต๋๋ค.
OKLAB์ OKLCH: ์ต์ ์ง๊ฐ์ ํ์ค
OKLCH๋ Bjorn Ottosson์ด ๊ฐ๋ฐํ LCH์ ๊ฐ์ ๋ ๋ฒ์ ์ ๋๋ค. LCH์ ์ง๊ฐ์ ๋น๊ท ์ผ์ฑ, ํนํ ํ๋์ ์์กฐ์ ๋ํ ๋ฌธ์ ๋ฅผ ์์ ํฉ๋๋ค. OKLCH๋ 2025-2026๋ ์ ์๋ก์ด CSS ํ๋ก์ ํธ์ ๊ถ์ฅ ๊ธฐ๋ณธ ์ ๊ณต๊ฐ์ด ๋์์ต๋๋ค.
color: oklch(60% 0.2 30);
/* ๋ช
๋: 0-100%, ์ฑ๋: 0-~0.4, ์์: 0-360 */
OKLCH๊ฐ CSS์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ณต๊ฐ์ธ ์ด์
- ์ต๊ณ ์ ์ง๊ฐ์ ๊ท ์ผ์ฑ โ ๋์ผํ ์์น ๋ณํ๊ฐ ๋ชจ๋ ์์กฐ์์ ๋์ผํ ์๊ฐ์ ๋ณํ๋ฅผ ์์ฑํฉ๋๋ค
- ์์ธก ๊ฐ๋ฅํ ๋ช ๋ โ ๋์ผํ ๋ช ๋ ๊ฐ์ ์์์ด ์ค์ ๋ก ๋๋ฑํ๊ฒ ๋ฐ๊ฒ ๋ณด์ ๋๋ค
- ์น์นํ ๊ทธ๋ผ๋ฐ์ด์ ์์ โ ์ ์ฒด ์์กฐ ๋ฒ์์์ ๋ณด๊ฐ์ด ๊นจ๋ํ๊ฒ ์ ์ง๋ฉ๋๋ค
- ๊ธฐ๋ณธ์ ์ผ๋ก sRGB-safe โ ๋๋ถ๋ถ์ OKLCH ๊ฐ์ด ์์ญ ๋ด sRGB ์์์ ์์ฑํฉ๋๋ค
- ์ง๊ด์ ์ธ ์ฑ๋ โ HSL๊ณผ ๋น์ทํ์ง๋ง ์ค์ ์ง๊ฐ์ ์ ํ์ฑ์ ๊ฐ์ถค
OKLCH ์ค์ ์ฌ์ฉ
/* OKLCH๋ก ๊ท ํ ์กํ ์์ ์ค์ผ์ผ ๋ง๋ค๊ธฐ */
--blue-100: oklch(95% 0.02 250);
--blue-300: oklch(75% 0.08 250);
--blue-500: oklch(55% 0.15 250);
--blue-700: oklch(35% 0.10 250);
--blue-900: oklch(15% 0.04 250);
๊ฐ ๋จ๊ณ๊ฐ ๋๋ต ๋์ผํ ๋ช ๋ ๊ฐ(20 ํผ์ผํธ ํฌ์ธํธ)๋งํผ ๋ณ๊ฒฝ๋๋ ๊ฒ์ ์ฃผ๋ชฉํ์ธ์. OKLCH๋ ์ง๊ฐ์ ์ผ๋ก ๊ท ์ผํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋จ๊ณ๋ ์ธ๊ฐ์ ๋์ ๊ท ๋ฑํ ๊ฐ๊ฒฉ์ผ๋ก ๋ณด์ ๋๋ค โ HSL๋ก๋ ๋ฌ์ฑํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์: OKLCH๋ Chrome 111+, Firefox 113+, Safari 15.4+์์ ์ง์๋ฉ๋๋ค. ๊ฐ์ฅ ๊ถ์ฅ๋๋ ์ต์ ์ ๊ณต๊ฐ์ผ๋ก ๋น ๋ฅด๊ฒ ์๋ฆฌ ์ก์์ต๋๋ค.
Color-Mix: CSS์์ ์์ ํผํฉํ๊ธฐ
color-mix() ํจ์๋ ์ง์ ๋ ์ ๊ณต๊ฐ์์ ๋ ์์์ ํผํฉํฉ๋๋ค:
/* sRGB์์ ๋นจ๊ฐ๊ณผ ํ๋์ ๋์ผํ๊ฒ ํผํฉ */
color: color-mix(in srgb, red, blue);
/* 30% ๊ธฐ๋ณธ ์์, 70% ํฐ์ โ ํดํธ */
color: color-mix(in oklch, var(--primary) 30%, white);
/* ๋ถ๋๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ์ํด ์ง๊ฐ์ ์ ๊ณต๊ฐ์ผ๋ก ํผํฉ */
background: color-mix(in oklch, var(--accent) 20%, var(--surface));
in <color-space> ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณด๊ฐ ๊ณต๊ฐ์ ์ ์ดํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ in oklch๊ฐ ์ต์์ ์๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก:
- ์ ์ฒ๋ฆฌ๊ธฐ ํจ์ ์์ด ํดํธ์ ์ ฐ์ด๋ ๋ง๋ค๊ธฐ
- ๋จ์ผ ์์ ํ ํฐ์์ ๊ตฌ์ฑ ์์ ๋ณํ ๊ตฌ์ถ
- ํธ๋ฒ ๋ฐ ํ์ฑ ์ํ๋ฅผ ๋์ ์ผ๋ก ์์ฑ
- ๋จ์ผ ํจ์๋ก ๊ทธ๋ผ๋ฐ์ด์ ๊ณผ ์ ์ฌํ ํจ๊ณผ ๋ง๋ค๊ธฐ
์๋ ์์ ๊ตฌ๋ฌธ: ๊ธฐ์กด ์์ ์์ ํ๊ธฐ
CSS Color Level 4๋ ๊ฐ๋ณ ์ฑ๋์ ์์ ํ์ฌ ๊ธฐ์กด ์์์์ ์๋ก์ด ์์์ ํ์ํ ์ ์๊ฒ ํฉ๋๋ค:
--primary: #3366cc;
/* OKLCH ์ฑ๋ ์ฌ์ฉ */
--primary-lighter: oklch(from var(--primary) l c calc(h + 30));
--primary-darker: oklch(from var(--primary) calc(l * 0.8) c h);
/* HSL ์ฑ๋ ์ฌ์ฉ */
--primary-light: hsl(from var(--primary) h s calc(l + 15%));
--primary-dark: hsl(from var(--primary) h s calc(l - 15%));
from <color> ํค์๋๋ ์๋ณธ ์์์ ์ฑ๋์ ๋์ ํจ์์ ์ฑ๋๋ก ์ธํฉํ๋ฉฐ, ๊ทธ ํ ์ฐ์ ์ฐ์ฐ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
์ ๊ณต๊ฐ๋ณ ์ฑ๋ ํค์๋
๊ฐ ์ ๊ณต๊ฐ์ ํน์ ์ฑ๋ ํค์๋๋ฅผ ๋ ธ์ถํฉ๋๋ค:
| ์ ๊ณต๊ฐ | ํค์๋ |
|----------|---------------------------------|
| rgb() | r, g, b, alpha |
| hsl() | h, s, l, alpha |
| hwb() | h, w, b, alpha |
| lch() | l, c, h, alpha |
| oklch()| l, c, h, alpha |
| lab() | l, a, b, alpha |
| oklab()| l, a, b, alpha |
๋ธ๋ผ์ฐ์ ์ง์ ๊ฐ์ (2026)
| ํจ์ | Chrome | Firefox | Safari | Edge |
|------|--------|---------|--------|------|
| rgb() / hsl() | ๋ชจ๋ | ๋ชจ๋ | ๋ชจ๋ | ๋ชจ๋ |
| hwb() | 101+ | 96+ | 15+ | 101+ |
| lab() / lch() | 111+ | 113+ | 15+ | 111+ |
| oklch() / oklab() | 111+ | 113+ | 15.4+ | 111+ |
| color-mix() | 111+ | 113+ | 16.2+ | 111+ |
| ์๋ ์์ ๊ตฌ๋ฌธ | 111+ | 113+ | 16.2+ | 111+ |
๋ชจ๋ ์ต์ ์์ ํจ์๋ Internet Explorer ์ง์์ด ํ์ํ์ง ์์ ํ๋ก์ ํธ์ ๋ํด 2026๋
์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ๋์ ํธํ์ฑ์ ์ํด์๋ ์ต์ ๊ตฌ๋ฌธ์ hex ๋๋ ๋ ๊ฑฐ์ rgb()๋ก ๋ณํํ๋ ๋น๋ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ธ์.
์ค์ฉ์ ๊ถ์ฅ ์ฌํญ
- ๊ธฐ์กด ํ๋ก์ ํธ์ฉ โ HSL์ ์ฌ์ ํ ๊ฐ๋ ์ฑ๊ณผ ๊ธฐ๋ฅ์ฑ์ ์ต์์ ๊ท ํ์ ์ ์งํฉ๋๋ค
- ์ ํ๋ก์ ํธ์ฉ โ ์ง๊ฐ์ ์ ํ์ฑ์ ์ํด OKLCH๋ฅผ ๊ธฐ๋ณธ ์ ๊ณต๊ฐ์ผ๋ก ์ฌ์ฉํ์ธ์
- ๊ทธ๋ผ๋ฐ์ด์ ์ฉ โ ์น์นํ ์ ํ์ ํผํ๊ธฐ ์ํด ํญ์ OKLCH์์ ๋ณด๊ฐํ์ธ์
- ๋์์ธ ์์คํ
์ฉ โ ๊ธฐ๋ณธ ์์์ OKLCH์ ์ ์ฅํ๊ณ ,
color-mix()๋๋ ์๋ ๊ตฌ๋ฌธ์ผ๋ก ๋ณํ์ ์์ฑํ์ธ์ - canvas/WebGL์ฉ โ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๋ค์ดํฐ๋ธ์ธ RGB๋ฅผ ์ฌ์ฉํ์ธ์
๊ฒฐ๋ก
์ต์ CSS ์์ ํจ์๋ ์น์์ ์์์ผ๋ก ํ ์ ์๋ ์ผ์ ๋ณํ์์ผฐ์ต๋๋ค. OKLCH๋ ์์ ์์คํ
๋์์ธ์ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ์ง๊ฐ์ ๊ท ์ผ์ฑ์ ์ ๊ณตํฉ๋๋ค. color-mix()์ ์๋ ์์ ๊ตฌ๋ฌธ์ ์ ์ฒ๋ฆฌ๊ธฐ ์์ ํจ์์ ํ์์ฑ์ ์์ฑ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ํจ๊ป ์น ๊ฐ๋ฐ์์๊ฒ ๋์์ธ ๋๊ตฌ๊ฐ ์๋
๊ฐ ์ ๊ณตํด ์จ ๊ฒ๊ณผ ๋์ผํ ์์ ๊ธฐ๋ฅ์ โ ์ด์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ ๊ณตํฉ๋๋ค.
OKLCH, LAB, HWB ๋ฐ ํด๋์ HEX/RGB/HSL์ ํฌํจํ ๋ชจ๋ ์ต์ CSS ์์ ํ์ ๊ฐ์ ๋ณํํ๋ ค๋ฉด ๋ฌด๋ฃ ์จ๋ผ์ธ ์์ ๋ณํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ธ์.