목록 보기
웹에서 다크모드 지원하기
프론트엔드

웹에서 다크모드 지원하기

카카오엔터테인먼트FE
카카오엔터테인먼트FE
2021년 11월 18일

두줄요약

웹 다크모드는 body 클래스와 CSS variable로 제어하는 방식을 제안했습니다. SSR·CSR 환경의 깜빡임과 웹뷰·구버전 OS 호환성도 함께 고려했습니다.

구조와 흐름

  • body 클래스에 다크·라이트 모드 상태를 부여하고 CSS 선택자로 색상 전환
  • localStorage, 웹뷰 userAgent, matchMedia 기반의 초기 모드 및 변경 감지
  • CSS variable로 모드별 색상 토큰 정의와 컴포넌트 스타일 재사용

선택 이유

  • prefers-color-scheme 단독 사용 시 시스템 설정 의존성과 구버전 OS 미지원 문제
  • 웹뷰 앱 설정, 서비스 자체 정책, 사용자 토글 등 다양한 색상 정책 제어

성능/운영 포인트

  • SSR·CSR 혼재 환경에서 콘텐츠 렌더링 전 동기 스크립트로 모드 판별
  • FCP 이후 클래스 변경으로 발생하는 화면 깜빡임 방지

주의할 점

  • 밝은 조명에서 다크모드의 가독성 저하 가능성 및 사용자 선택권 필요
  • 이미지의 모드별 가시성 검증과 필요 시 별도 이미지 준비

카카오 계열사 채용30건

채용 사이트에서 전체 보기

다음 읽기

#CSS 주제를 이어서 읽기

웹에서 다크모드 지원하기

웹 다크모드는 body 클래스와 JavaScript로 제어해 다양한 정책을 지원할 수 있습니다. 렌더링 전 판별과 CSS 변수로 깜빡임 및 스타일 중복을 줄였습니다.

카카오엔터테인먼트FE
카카오엔터테인먼트FE
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...