안녕하세요, 코딩하는곰입니다! 웹 개발을 시작하면서 가장 먼저 접하게 되는 것 중 하나가 바로 색상 설정일 텐데요. HTML과 CSS에서 색상을 표현하고 적용하는 방법은 생각보다 다양합니다. 오늘은 color와 background-color 속성을 중심으로, 웹에서 색상을 다루는 모든 기본기와 실무 팁을 20년 경력의 개발자 관점에서 깊이 있게 풀어보겠습니다. 단순히 색을 넣는 법을 넘어, 효율적이고 접근성 좋은 디자인을 위한 핵심을 배워보세요.
color와 background-color 속성 이해하기CSS에서 텍스트와 배경의 색상을 지정하는 핵심 속성은 각각 color와 background-color입니다. 이 두 속성은 웹 페이지의 시각적 계층과 가독성을 결정하는 가장 기본적이면서도 중요한 요소죠.
color 속성: 요소의 전경색(foreground color)을 지정합니다. 주로 텍스트의 색상을 정의하는 데 사용되지만, text-decoration(밑줄 등)이나 border-color(기본값으로 상속되는 경우) 등에도 영향을 미칠 수 있습니다.background-color 속성: 요소의 배경색(background color)을 지정합니다. 해당 요소의 콘텐츠 영역과 패딩(padding) 영역까지 채우는 색상을 정의합니다.
이 두 속성을 사용하는 기본 문법은 매우 간단합니다.selector {color: [색상값];background-color: [색상값];}
예를 들어, 제목을 빨간색 텍스트에 노란 배경으로 만들고 싶다면 다음과 같이 작성할 수 있습니다.
h1 {color: red;background-color: yellow;}
그런데 여기서 [색상값]을 표현하는 방법이 단순히 ‘red’, ‘yellow’ 같은 이름만 있는 것이 아닙니다. 웹 표준은 다양한 색상 표현 방식을 지원하며, 각각의 장단점과 사용처가 있습니다. 이제 그 다양한 방법들을 하나씩 파헤쳐 보겠습니다.
📊 데이터 분석과 프로그래밍에 관심이 있다면, (자바스크립트 마스터하기) 형 변환의 모든 것 암시적 vs 명시적 변환 완벽 가이드를 참고해보세요.
CSS에서 미리 정의된 140여 개의 색상 이름을 사용하는 방법입니다. red, blue, green, cornflowerblue, papayawhip 등이 있으며, 직관적이고 기억하기 쉽다는 장점이 있습니다. 하지만 표현할 수 있는 색상의 범위가 제한적이고, 디자이너와의 협업 시 정확한 색상을 지정하기 어렵다는 단점이 있습니다. 프로젝트初期나 프로토타이핑 때 유용하지만, 대규모 프로젝트에서는 다른 방식을 권장합니다.
.by-keyword {color: darkcyan;background-color: lavenderblush;}
가장 널리 사용되는 방식으로, # 뒤에 6자리(또는 3자리)의 16진수 숫자로 색상을 표현합니다. 형식은 #RRGGBB입니다.
#000000은 검정, #FFFFFF는 흰색, #FF0000은 순수한 빨강입니다. 각 채널을 00부터 FF(255)까지의 값으로 표현할 수 있어 총 16,777,216(256^3)가지 색상을 표현 가능합니다. 3자리 축약형(#RGB)도 가능한데, #F00은 #FF0000과 같습니다. 디자인 툴(피그마, 포토샵 등)에서 추출한 색상값이 대부분 HEX 형식이므로 실무에서의 호환성이 뛰어납니다..by-hex {color: #1a73e8; /* 구글 블루 */background-color: #34a853; /* 구글 그린 */}
빨강, 초록, 파랑의 광원 삼원색을 조합하여 색을 표현하는 방식입니다. rgb() 함수형으로 사용합니다.
rgb(red, green, blue)rgb(255, 0, 0)은 빨강, rgb(0, 255, 0)은 초록입니다.rgba(red, green, blue, alpha)alpha 값은 0(완전 투명)부터 1(완전 불투명) 사이의 소수입니다..by-rgb {color: rgb(66, 133, 244);background-color: rgb(255, 255, 255);}.by-rgba {/* 반투명한 검정 배경 (어두운 오버레이 효과) */background-color: rgba(0, 0, 0, 0.5);color: rgba(255, 255, 255, 0.9);}
색상(Hue), 채도(Saturation), 명도(Lightness)의 세 가지 값을 조절하여 색을 표현하는 방식입니다. 디자이너가 색상을 직관적으로 조정하기에 매우 유용합니다.
hsl(hue, saturation, lightness)hue: 색상환 상의 각도 (0~360). 0=빨강, 120=초록, 240=파랑.saturation: 채도 (0%~100%). 0%는 회색톤, 100%는 순색.lightness: 명도 (0%~100%). 0%는 검정, 100%는 흰색, 50%는 일반 색상.hsla(hue, saturation, lightness, alpha)
HSL의 가장 큰 장점은 색조 통일성을 유지하며 명도와 채도를 쉽게 조절할 수 있다는 점입니다. 예를 들어, 기본 색상(hsl(200, 100%, 50%))에서 명도만 높여 연한 버전(hsl(200, 100%, 80%))을, 명도를 낮춰 어두운 버전(hsl(200, 100%, 20%))을 쉽게 생성할 수 있습니다. 이는 디자인 시스템의 색상 팔레트를 구성할 때 매우 강력한 도구가 됩니다..by-hsl {/* 밝은 파란색 */color: hsl(210, 100%, 50%);}.by-hsla {/* 채도가 낮고 반투명한 녹색 */background-color: hsla(120, 60%, 70%, 0.7);}
회원가입이나 비밀번호 변경 시 안전한 비밀번호를 빠르게 생성할 수 있는 온라인 도구가 유용합니다.
현대적인 CSS 작성법의 핵심은 재사용성입니다. 색상값을 CSS 변수(Custom Properties)로 정의해두면 유지보수가 편해지고 일관성이 보장됩니다.
:root {--primary-color: #1a73e8;--primary-light: hsl(210, 100%, 80%);--primary-dark: hsl(210, 100%, 20%);--background-overlay: rgba(0, 0, 0, 0.6);--text-color: #202124;--surface-color: #ffffff;}.header {background-color: var(--primary-color);color: var(--surface-color);}.card {background-color: var(--surface-color);color: var(--text-color);border: 1px solid var(--primary-light);}.modal-backdrop {background-color: var(--background-overlay);}
색상만으로 정보를 전달해서는 안 됩니다. “빨간색 텍스트 = 오류”라고 할 때, 색맹 사용자는 이를 인지하지 못할 수 있습니다. 반드시 텍스트, 아이콘, 패턴 등 다른 시각적 단서를 함께 제공해야 합니다. 가장 중요한 것은 명도 대비(Contrast Ratio)입니다. WCAG(Web Content Accessibility Guidelines) 가이드라인은 텍스트와 배경색 사이에 최소 대비율을 규정합니다.
background-color: #eeeeee;에 color: #ffffff;를 쓰면 대비가 너무 낮아 읽기 힘듭니다.rgba()나 hsla() 대신 새로운 rgb()와 hsl() 문법도 슬래시(/)를 사용해 투명도를 표현할 수 있습니다. rgb(255 0 0 / 0.5) (IE 지원 안 함)currentcolor 키워드: 요소의 현재 color 속성값을 참조합니다. border나 box-shadow에 동일한 색상을 적용할 때 유용합니다..button {color: var(--primary-color);border: 2px solid currentcolor; /* border 색상이 color를 따라감 */box-shadow: 0 0 5px currentcolor;}
로또 번호를 과학적으로 접근하고 싶다면, AI 분석과 통계 기반 번호 추천 앱 지니로또AI가 최적의 도구입니다.
정리하자면, HTML과 CSS에서 색상을 다루는 것은 color와 background-color 속성에 다양한 값(HEX, RGB, RGBA, HSL, HSLA, 이름)을 할당하는 것으로 시작합니다. 하지만 진짜 실력은 이 기본기를 바탕으로 디자인 시스템을 효율적으로 구축하는 방법, CSS 변수를 활용한 유지보수성 향상, 그리고 모든 사용자를 배려하는 웹 접근성 기준 준수에 있습니다. 오늘 소개한 내용이 여러분의 프로젝트에 생동감 있는 색상을 입히고, 더 나아가 견고하고 아름다운 디자인 기반을 마련하는 데 도움이 되었으면 좋겠습니다. 다음 시간에는 이 색상들을 활 용한 그라데이션과 그림자 효과에 대해更深이 파고들어 보겠습니다. 질문은 댓글로 남겨주세요! 코딩하는곰이었습니다. 감사합니다.
집중력과 논리적 사고력을 기르고 싶다면, 클래식, 데일리, 스토리 모드가 있는 스도쿠 저니를 설치해보세요.
