본문 바로가기
StyleSheet/CSS

[CSS] 다크 모드(Dark Mode) 지원을 위한 테마 전략

반응형

이번 포스팅에서는 [CSS 디자인 시스템] 파트의 세부 주제인 사용자 설정 감지 및 다크 모드 토글링에 대하여 상세히 알아보겠습니다.

1. OS 테마 자동 감지하기: prefers-color-scheme

운영체제(윈도우, 맥, 모바일 기기)가 다크 모드인지 라이트 모드인지 미디어 쿼리를 통해 자동으로 감지하여 초기 스타일을 맞춰줄 수 있습니다.

/* 기본 라이트 모드 변수 선언 */
:root {
  --bg-color: #ffffff;
  --text-color: #333333;
}

/* 사용자가 기기를 다크 모드로 설정한 경우 덮어쓰기 */
@media (prefers-color-scheme: dark) {
  :root {
    --bg-color: #121212;
    --text-color: #f1f1f1;
  }
}

2. 커스텀 테마 버튼으로 강제 제어하기

사이트 내에 해/달 버튼을 두어 사용자가 임의로 모드를 바꿀 수 있게 하려면, <body><html> 태그에 data-theme="dark" 속성을 추가/제거하는 방식을 씁니다.

/* 자바스크립트로 html 태그에 data-theme="dark"가 붙었을 때 변수 교체 */
[data-theme="dark"] {
  --bg-color: #1a202c;
  --text-color: #e2e8f0;
  --border-color: #4a5568;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
  transition: background-color 0.3s, color 0.3s;
}

지금까지 다크 모드 감지와 데이터 속성(data attribute)을 이용한 테마 스위칭에 대해 살펴보았습니다. 모든 색상을 하드코딩하지 말고 반드시 CSS 변수를 거치도록 설계하세요.

반응형