색상 코드 완벽 가이드: HEX, RGB, HSL의 차이와 활용

색상 코드 완벽 가이드: HEX, RGB, HSL의 차이와 활용

디지털 색상 표현의 역사

웹 디자인에서 색상을 코드로 표현하는 방법은 크게 세 가지가 있습니다: HEX, RGB, HSL. 각각은 장단점이 있으며, 상황에 따라 적절한 형식을 선택하는 것이 중요합니다.

1990년대 초 웹이 탄생했을 때, 색상은 16진수 코드(HEX)로 표현되었습니다. 이는 HTML에서 간결하고 표준화된 방식이었기 때문입니다. 1996년 CSS1이 등장하면서 rgb() 함수가 추가되었고, 2011년 CSS3에서는 인간 친화적인 hsl() 함수가 표준화되었습니다.

2026년 웹 디자인 트렌드

현대 웹 디자인에서는 CSS 변수(Custom Properties)와 HSL을 결합한 확장 가능한 색상 시스템이 대세입니다. HSL은 색상 변형이 쉬워 다크 모드, 테마 변경, 동적 색상 조정에 최적입니다.

HEX 색상: #RRGGBB 형식

HEX란?

HEX 코드는 16진수(Hexadecimal)로 색상을 표현하는 방식입니다. # 기호 뒤에 6자리 (또는 3자리 단축형)로 Red, Green, Blue 값을 나타냅니다.

#FF5733

  • FF = Red (255)
  • 57 = Green (87)
  • 33 = Blue (51)

16진수 변환 원리

10진수 16진수 설명
0 00 최소값 (색상 없음)
127 7F 중간값
255 FF 최대값 (전체 밝기)

단축 표기법

같은 숫자가 두 번 반복되면 3자리로 축약할 수 있습니다.

  • #FF0000 = #F00 (빨강)
  • #00FF00 = #0F0 (초록)
  • #0000FF = #00F (파랑)
  • #FFFFFF = #FFF (흰색)
  • #000000 = #000 (검정)

HEX의 장점

  • 간결함: 6자리로 모든 색상 표현 (약 1,677만 색)
  • 널리 사용: 디자인 툴, 컬러 피커에서 기본 형식
  • 호환성: 모든 브라우저에서 지원 (IE 3.0부터)

HEX의 단점

  • 가독성 낮음: #3498DB가 어떤 색인지 즉시 파악 어려움
  • 조작 어려움: “밝기를 20% 높이기” 같은 작업이 직관적이지 않음
  • 투명도 미지원: 8자리 HEXA (#RRGGBBAA)는 최신 브라우저만 지원

RGB 색상: 빛의 삼원색

RGB란?

RGB는 Red, Green, Blue의 약자로, 각 색상을 0~255 범위의 십진수로 표현합니다. 빛의 삼원색 이론에 기반하며, 세 색을 섞으면 다양한 색상을 만들 수 있습니다.

rgb(255, 87, 51)

  • 255 = Red (최대)
  • 87 = Green (중간)
  • 51 = Blue (낮음)

RGB vs HEX 비교

색상 HEX RGB 미리보기
빨강 #FF0000 rgb(255, 0, 0)
초록 #00FF00 rgb(0, 255, 0)
파랑 #0000FF rgb(0, 0, 255)
주황 #FF5733 rgb(255, 87, 51)
보라 #9B59B6 rgb(155, 89, 182)
청록 #1ABC9C rgb(26, 188, 156)

RGBA: 투명도 지원

RGB에 Alpha(투명도) 채널을 추가하면 반투명 색상을 표현할 수 있습니다. Alpha 값은 0 (완전 투명) ~ 1 (불투명) 범위입니다.

rgba(255, 87, 51, 1)
rgba(255, 87, 51, 0.7)
rgba(255, 87, 51, 0.4)
rgba(255, 87, 51, 0.1)

RGB의 장점

  • 직관적: 0~255 숫자로 이해하기 쉬움
  • 계산 용이: JavaScript에서 산술 연산 가능
  • 투명도 지원: RGBA로 반투명 색상 표현
  • 범용성: Photoshop, Canvas API 등에서 기본 사용

RGB의 단점

  • 색상 변형 어려움: “밝기만 조절” 같은 작업이 복잡
  • 긴 표기: HEX보다 문자 수 많음 (rgb(255, 87, 51) vs #FF5733)

HSL 색상: 인간 친화적 표현

HSL란?

HSL은 Hue(색조), Saturation(채도), Lightness(밝기)의 약자로, 색상을 인간이 인지하는 방식과 유사하게 표현합니다.

  • Hue (색조): 0~360도 (색상환의 각도)
    • 0° / 360° = 빨강
    • 120° = 초록
    • 240° = 파랑
  • Saturation (채도): 0%~100% (색의 순수도)
    • 0% = 회색 (무채색)
    • 100% = 순수한 색
  • Lightness (밝기): 0%~100%
    • 0% = 검정
    • 50% = 기본 색
    • 100% = 흰색
hsl(9, 100%, 60%)

  • 9 = 주황 계열 (색조)
  • 100% = 순수한 색 (채도)
  • 60% = 약간 밝음 (밝기)

색조(Hue) 색상환

각도 색상 HSL 예시 미리보기
0° / 360° 빨강 hsl(0, 100%, 50%)
60° 노랑 hsl(60, 100%, 50%)
120° 초록 hsl(120, 100%, 50%)
180° 청록 hsl(180, 100%, 50%)
240° 파랑 hsl(240, 100%, 50%)
300° 자홍 hsl(300, 100%, 50%)

밝기(Lightness) 변화

L: 10%
L: 30%
L: 50%
L: 70%
L: 90%

HSL의 장점

  • 색상 변형 용이: 밝기만 조절하거나 채도만 변경 가능
  • 직관적: “파란색의 밝은 버전” 같은 개념 표현 쉬움
  • 디자인 시스템 최적: CSS 변수로 테마 색상 관리 편리
  • 접근성: 대비 조절이 쉬워 WCAG 접근성 기준 충족 용이

HSL의 단점

  • 브라우저 지원: IE 8 이하에서 미지원 (2026년엔 무관)
  • 색 공간 한계: 지각적으로 균일하지 않음 (L*a*b*에 비해)

세 형식 비교: 언제 무엇을 쓸까?

기준 HEX RGB HSL
표기 길이 짧음 (#FF5733) 중간 (rgb(255,87,51)) 중간 (hsl(9,100%,60%))
가독성 낮음 중간 높음
색상 조작 어려움 중간 쉬움
투명도 8자리 필요 (#RRGGBBAA) RGBA 지원 HSLA 지원
디자인 툴 기본 형식 Photoshop 등에서 사용 일부 툴만 지원
JS 조작 변환 필요 직접 연산 가능 테마 변경 용이
브라우저 지원 완벽 완벽 IE 9+ (2026년엔 무관)

권장 사용 시나리오

HEX 사용 권장

  • 디자인 툴에서 복사한 색상
  • 간결한 코드 선호
  • 정적 색상 (변경 없음)
  • 레거시 프로젝트

RGB 사용 권장

  • Canvas API, 이미지 처리
  • JavaScript로 색상 계산
  • 투명도 필요 (RGBA)
  • Photoshop 작업

HSL 사용 권장

  • 디자인 시스템 구축
  • 다크 모드 / 테마 변경
  • 색상 변형 (밝기/채도 조절)
  • 접근성 개선 (대비 조절)

색상 변환 방법

HEX → RGB

function hexToRgb(hex) {
    const r = parseInt(hex.slice(1, 3), 16);
    const g = parseInt(hex.slice(3, 5), 16);
    const b = parseInt(hex.slice(5, 7), 16);
    return `rgb(${r}, ${g}, ${b})`;
}

hexToRgb('#FF5733'); // "rgb(255, 87, 51)"

RGB → HEX

function rgbToHex(r, g, b) {
    return '#' + [r, g, b]
        .map(x => x.toString(16).padStart(2, '0'))
        .join('').toUpperCase();
}

rgbToHex(255, 87, 51); // "#FF5733"

RGB → HSL

function rgbToHsl(r, g, b) {
    r /= 255; g /= 255; b /= 255;
    const max = Math.max(r, g, b);
    const min = Math.min(r, g, b);
    let h, s, l = (max + min) / 2;

    if (max === min) {
        h = s = 0; // achromatic
    } else {
        const d = max - min;
        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);

        switch (max) {
            case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;
            case g: h = ((b - r) / d + 2) / 6; break;
            case b: h = ((r - g) / d + 4) / 6; break;
        }
    }

    return `hsl(${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(l * 100)}%)`;
}

rgbToHsl(255, 87, 51); // "hsl(9, 100%, 60%)"

2026년 모던 웹 개발 트렌드

CSS 변수 + HSL로 디자인 시스템 구축

:root {
    /* HSL로 기본 색상 정의 */
    --primary-h: 9;
    --primary-s: 100%;
    --primary-l: 60%;

    /* 변형 색상 자동 생성 */
    --primary: hsl(var(--primary-h), var(--primary-s), var(--primary-l));
    --primary-light: hsl(var(--primary-h), var(--primary-s), 80%);
    --primary-dark: hsl(var(--primary-h), var(--primary-s), 40%);
}

/* 다크 모드 */
[data-theme="dark"] {
    --primary-l: 70%; /* 밝기만 조절 */
}

/* 사용 */
.button {
    background: var(--primary);
}

.button:hover {
    background: var(--primary-dark);
}

동적 색상 생성

/* 기본 색만 정의하면 나머지 자동 생성 */
:root {
    --brand-color: 220; /* 파란색 */
}

.primary { color: hsl(var(--brand-color), 70%, 50%); }
.secondary { color: hsl(calc(var(--brand-color) + 30), 70%, 50%); }
.tertiary { color: hsl(calc(var(--brand-color) + 60), 70%, 50%); }

접근성 개선: 대비 자동 조절

:root {
    --text-color: hsl(0, 0%, 20%);
    --bg-color: hsl(0, 0%, 98%);
}

/* 다크 모드: 밝기만 반전 */
[data-theme="dark"] {
    --text-color: hsl(0, 0%, 95%);
    --bg-color: hsl(0, 0%, 10%);
}

ToolZipper 색상 도구

결론

HEX, RGB, HSL은 각각 고유한 장점이 있으며, 상황에 맞게 선택하는 것이 중요합니다. 2026년 웹 개발에서는 HSL과 CSS 변수를 결합한 확장 가능한 디자인 시스템이 표준이 되어가고 있습니다.

핵심 요약

  • HEX: 16진수 6자리 (#FF5733), 간결하고 가장 널리 사용
  • RGB: rgb(255, 87, 51), 0-255 범위, 직관적이고 계산 용이
  • HSL: hsl(9, 100%, 60%), 색조/채도/밝기, 색상 변형에 최적
  • 투명도: RGBA와 HSLA로 0~1 범위 alpha 값 지원
  • 2026년 트렌드: CSS 변수 + HSL로 디자인 시스템 구축, 다크 모드 쉬움
  • 권장: 정적 색상 = HEX, 계산/투명도 = RGB, 테마/변형 = HSL

지금 바로 색상 변환기에서 세 형식을 비교해보세요!

문의하기