color mixer - 색상 조합
1. 메인 색상은 정했는데, 서브 색상은 뭘 골라야 할까?
프로젝트의 메인 색상이 #C9A48E로 결정되었습니다. 따뜻한 베이지 톤의 브랜드 컬러, 마음에 듭니다. 그런데 문제는 그다음입니다. 버튼 호버 색상은? CTA 버튼의 강조색은? 비활성 상태의 톤은? 머릿속에 "이 계열이 어울릴 것 같다"는 감각은 있는데, 정확히 어떤 HEX 코드인지 모르겠습니다. 컬러 피커를 열어 이리저리 만져봐도 "이건가?" 하고 찍어보는 과정이 반복됩니다.
그래서 발상을 바꿨습니다. 메인 색상과 대략적으로 원하는 서브 색상 두 가지만 팔레트에서 선택하면, 그 사이의 전체 스펙트럼을 단계별로 보여주는 도구를 만들면 어떨까. 우리는 "이 톤과 저 톤 사이 어딘가"라는 감각적 판단만 하면 되고, 정확한 색상 코드는 도구가 계산해주는 것입니다. 생성된 스와치 중에서 클릭 한 번으로 HEX 코드를 복사하면 바로 CSS나 디자인 툴에 적용할 수 있습니다.
a. 이런 상황에서 활용할 수 있습니다
- UI 디자인 시스템 구축: 메인 컬러에서 호버·액티브·비활성 상태 색상 도출
- 그라데이션 팔레트 생성: 배경 그라데이션의 중간 색상을 정밀하게 추출
- 브랜드 컬러 확장: 기존 브랜드 색상에서 보조색·악센트색 체계 수립
- 데이터 시각화 스케일: 히트맵·차트용 연속 컬러 스케일 생성
- 일러스트 쉐이딩: 밝은 톤에서 어두운 톤까지 자연스러운 명암 단계 추출
2. 도구 사용법 가이드
두 가지 톤의 컬러를 선택하고 세밀한 분할 단계를 설정하여 완벽한 중간색 스와치를 추출합니다.

a. 기준 색상 선택 및 입력하기
화면 좌측의 입력 패널에서 베이스가 되는 시작 컬러와 끝 컬러를 각각 지정합니다. 동그라미 모양의 직관적인 팔레트 아이콘을 클릭하여 시각적으로 원하는 색조를 고르거나, 이미 알고 있는 고유한 HEX 헥스 코드가 있다면 입력창에 직접 타이핑하여 정확한 색상을 반영할 수 있습니다.

b. 팔레트 그라데이션 단계 설정하기
화면 우측 상단의 스펙트럼 미리보기 막대 옆에서 중간 단계의 개수를 섬세하게 조절합니다. 8단계, 12단계, 16단계, 20단계 옵션 중 현재 진행 중인 그래픽 작업에 가장 적합한 디테일과 밀도 수준을 결정하여 클릭합니다. 단계가 많을수록 더욱 부드러운 톤의 전환을 시각적으로 확인할 수 있습니다.

c. 색상 코드 원클릭 복사하기
화면 우측 하단에 바둑판 형식으로 생성된 다채로운 톤 앤 매너 스와치 타일들을 확인합니다. 마음에 드는 특정 중간색 네모 칸을 마우스로 가볍게 클릭하면, 프론트엔드 개발이나 그래픽 툴에서 바로 사용할 수 있도록 해당 컬러의 헥스 코드가 자동으로 클립보드에 복사되어 높은 작업 효율을 자랑합니다.
3. 색상 혼합의 원리와 컬러 스페이스
컴퓨터에서 "두 색을 섞는다"는 것은 물감을 섞는 것과 근본적으로 다릅니다. 디지털 색상 혼합은 컬러 스페이스(Color Space) 안에서 두 점 사이를 보간(interpolation)하는 수학적 연산입니다.
a. 디지털 색상 표현 방식
이 도구는 HEX 코드를 입력·출력하며, 내부적으로 균일한 시각적 전환을 위한 보간 계산을 수행합니다. 생성된 HEX 코드는 CSS, Figma, Photoshop 등 모든 디자인 도구에서 그대로 사용할 수 있습니다.
| 컬러 모델 | 구성 요소 | 표현 예시 | 주요 용도 |
|---|---|---|---|
| HEX | 16진수 RGB | #3B82F6 | 웹 개발, CSS |
| RGB | Red, Green, Blue (0~255) | rgb(59, 130, 246) | 화면 표시, 디지털 디자인 |
| HSL | Hue, Saturation, Lightness | hsl(217, 91%, 60%) | 색상 조절에 직관적 |
| HSB/HSV | Hue, Saturation, Brightness | hsb(217, 76%, 96%) | Figma, Photoshop |
| CMYK | Cyan, Magenta, Yellow, Key | cmyk(76, 47, 0, 4) | 인쇄물 |
| LAB | Lightness, a*, b* | lab(56, 10, -60) | 지각적 균일성 기반 |
b. RGB 보간 vs 지각적 보간
두 색을 섞는 가장 단순한 방법은 RGB 채널별 선형 보간입니다. 시작색의 R, G, B 값과 끝색의 R, G, B 값 사이를 균등하게 나누는 것입니다.
시작색: #FF0000 (빨강) → R:255, G:0, B:0
끝 색: #0000FF (파랑) → R:0, G:0, B:255
50% 중간값 (RGB 보간): R:128, G:0, B:128 → #800080 (보라)
이 방법은 수학적으로 정확하지만, 인간의 눈에는 중간 영역이 어둡게 느껴지는 문제가 있습니다. 이를 해결하기 위해 HSL이나 LAB 컬러 스페이스에서 보간하는 방식을 사용하면 시각적으로 더 균일한 그라데이션을 얻을 수 있습니다.
| 보간 방식 | 특징 | 적합한 상황 |
|---|---|---|
| RGB 선형 보간 | 계산이 단순, 중간 영역 어두워짐 | 빠른 프로토타이핑 |
| HSL 보간 | 색상(Hue) 방향 제어 가능 | UI 디자인 시스템 |
| LAB 보간 | 인간 지각 기반, 가장 자연스러움 | 데이터 시각화, 인쇄 |
c. 단계 수에 따른 그라데이션 밀도
두 색상 사이를 몇 단계로 나눌지에 따라 팔레트의 정밀도가 달라집니다. 단계가 적으면 각 색상 간 차이가 뚜렷하여 구분이 명확하고, 단계가 많으면 부드러운 톤 전환을 얻을 수 있습니다.
| 단계 수 | 색상 간 간격 | 권장 사용 상황 |
|---|---|---|
| 8단계 | 넓은 간격, 뚜렷한 차이 | 심플한 UI 테마, 아이콘 |
| 12단계 | 중간 밀도 | 일반적인 디자인 시스템 |
| 16단계 | 촘촘한 간격 | 데이터 시각화 스케일 |
| 20단계 | 가장 세밀한 전환 | 일러스트 쉐이딩, 히트맵 |
4. 실무에서 색상 조합이 필요한 순간들
a. 디자인 시스템의 색상 스케일 구축
Tailwind CSS나 Material Design처럼, 하나의 기준 색상에서 50~900단계의 명도 스케일을 만들어야 할 때 활용합니다. 메인 색상과 흰색(밝은 쪽), 메인 색상과 검정(어두운 쪽)을 각각 혼합하면 일관된 색상 시스템을 빠르게 구축할 수 있습니다.
/* 색상 스케일 구축 예시 */
--color-primary-100: /* #C9A48E + #FFFFFF 혼합의 밝은 쪽 */
--color-primary-300: /* #C9A48E + #FFFFFF 혼합의 중간 */
--color-primary-500: #C9A48E; /* 메인 색상 */
--color-primary-700: /* #C9A48E + #2D1B0E 혼합의 중간 */
--color-primary-900: /* #C9A48E + #2D1B0E 혼합의 어두운 쪽 */
b. 버튼 상태별 색상 도출
하나의 버튼에 기본·호버·액티브·비활성 상태가 필요합니다. 메인 색상에서 약간 어두운 색(호버), 더 어두운 색(액티브), 밝고 채도 낮은 색(비활성)을 이 도구로 추출하면 시각적으로 자연스러운 상태 변화를 만들 수 있습니다.
c. 데이터 시각화 컬러 스케일
히트맵·코로플레스 지도 등에서 "낮은 값은 파랑, 높은 값은 빨강"처럼 연속적인 컬러 스케일이 필요합니다. 시작색과 끝색을 넣고 16~20단계로 생성하면 즉시 사용 가능한 색상 배열을 얻을 수 있습니다.
d. 일러스트·아이콘 쉐이딩
캐릭터 일러스트나 아이콘의 명암 처리 시, 하이라이트 색상과 그림자 색상 사이의 자연스러운 중간 톤을 추출할 때 활용합니다.
5. 트러블슈팅: 색상 조합 시 자주 겪는 문제
a. 비슷한 색 두 개를 넣었더니 차이가 거의 없는 팔레트가 생성된 경우
원인: 시작색과 끝색의 명도·채도·색상(Hue) 차이가 너무 작으면, 중간 단계들이 육안으로 거의 구분되지 않습니다.
해결 방법:
- 명도 차이를 충분히 벌립니다. 시작색은 밝은 톤, 끝색은 어두운 톤으로 설정하면 단계별 차이가 뚜렷해집니다.
- 또는 색상환에서 거리가 있는 두 색을 선택하여 더 다채로운 스펙트럼을 만듭니다.
- 단계 수를 줄이면 (20단계 → 8단계) 각 단계 간 차이가 커집니다.
b. 생성된 중간색이 탁하거나 칙칙하게 보이는 경우
원인: 색상환에서 반대편에 위치한 두 보색(예: 빨강 + 초록)을 RGB로 선형 보간하면, 중간 영역에서 채도가 떨어져 회색 계열이 나타납니다. 이를 "muddy middle" 현상이라고 합니다.
해결 방법:
- 보색을 직접 섞는 대신, 중간 경유 색상을 설정합니다. 예: 빨강 → 노랑(1차 혼합) + 노랑 → 초록(2차 혼합)으로 나누어 작업.
- 또는 채도가 높은 색을 시작색과 끝색으로 선택하여 중간 영역의 채도 하락을 최소화합니다.
c. HEX 코드를 입력했는데 색상이 인식되지 않는 경우
원인: HEX 코드의 형식이 올바르지 않습니다. # 기호 누락, 잘못된 문자 포함(G~Z), 자릿수 오류 등이 원인입니다.
해결 방법:
- 올바른 형식:
#+ 6자리 16진수 (예:#3B82F6) - 허용 문자:
0-9,A-F(대소문자 무관) - 3자리 단축 형식(예:
#F00)은 6자리로 확장하여 입력합니다 (#FF0000)
d. 생성된 팔레트를 Figma/Photoshop에서 동일하게 적용했는데 색이 달라 보이는 경우
원인: 모니터의 색상 프로파일(sRGB, Display P3, Adobe RGB 등)에 따라 동일한 HEX 값이라도 화면에서 보이는 색이 다를 수 있습니다. 특히 macOS의 P3 디스플레이와 Windows의 sRGB 모니터 간 차이가 두드러집니다.
해결 방법:
- HEX 코드 값 자체는 정확하므로, 값을 신뢰합니다. 화면 차이는 디스플레이 캘리브레이션의 문제입니다.
- 팀 협업 시 동일한 HEX 코드를 기준으로 소통하면 디바이스 간 차이를 줄일 수 있습니다.
e. 공통 패턴: 색상 조합 문제의 핵심
- 시작색과 끝색의 명도·채도 차이를 충분히 확보 — 차이가 작으면 단계가 구분되지 않음
- 보색 직접 혼합 주의 — 중간 영역의 채도 저하(muddy middle) 발생 가능
- HEX 코드 값을 기준으로 소통 — 모니터 차이는 캘리브레이션의 문제
6. 생각해볼 거리
디지털에서 색을 섞는 것과 물감을 섞는 것은 왜 결과가 다를까요?
물감은 감산 혼합(subtractive mixing)으로, 빛을 흡수하여 색을 만듭니다. 빨강 + 파랑 = 보라이지만, 모든 물감을 섞으면 검정에 가까워집니다. 반면 디지털 화면은 가산 혼합(additive mixing)으로, 빛을 더하여 색을 만듭니다. 빨강(R) + 초록(G) = 노랑이고, 모든 빛을 합하면 흰색이 됩니다. 이 근본적인 차이 때문에 미술 시간에 배운 색상 혼합 직관이 디지털에서는 통하지 않는 경우가 많습니다. 이 도구는 가산 혼합 원리에 기반하여 디지털 환경에 최적화된 중간색을 계산합니다.
"수학적으로 균일한 색상 단계"가 왜 데이터 시각화에서 중요할까요?
히트맵에서 "값 10과 20의 차이"와 "값 80과 90의 차이"가 동일해야 하는데, 색상 단계가 불균일하면 낮은 구간에서는 차이가 뚜렷하고 높은 구간에서는 차이가 안 보이는 왜곡이 발생합니다. 이러면 사용자는 데이터를 잘못 해석하게 됩니다. 지각적으로 균일한(perceptually uniform) 색상 스케일을 사용해야 데이터의 크기 차이를 정직하게 시각으로 전달할 수 있습니다. 이것이 데이터 시각화 분야에서 viridis, magma 같은 과학적으로 설계된 컬러맵이 권장되는 이유입니다.
같은 HEX 코드인데 모니터마다 색이 다르게 보이는 이유는?
#3B82F6이라는 HEX 코드는 "R:59, G:130, B:246 비율로 빛을 내라"는 지시일 뿐, 실제 물리적으로 어떤 파장의 빛이 나오는지는 모니터의 색상 프로파일(color profile)에 따라 달라집니다. Apple의 P3 디스플레이는 sRGB보다 25% 넓은 색역을 가지므로 같은 값이라도 더 선명하게 보입니다. 이 때문에 전문 디자인 현장에서는 모니터 캘리브레이션과 ICC 프로파일을 맞추는 것이 중요하고, 색상 소통 시에는 "이 색이 예뻐 보인다"가 아닌 "HEX #3B82F6 값을 사용한다"라고 수치로 지정하는 것이 정확합니다.
브라우저 탭 하나로 두 색상 사이의 전체 스펙트럼을 단계별로 생성하고 HEX 코드를 바로 복사할 수 있습니다 — 컬러 피커를 이리저리 만지며 "이 색이 맞나?" 고민하는 시간이 사라집니다. 그것만으로도 이 도구의 역할은 충분하다고 생각합니다.