실무에 바로 적용할 수 있는 웹 제작 꿀팁 및 유용한 자료실 공간입니다.
나눔웹이 제공하는 핵심 노하우와 마케팅 인사이트를 자유롭게 활용해 보십시오.

나눔웹 퍼블리싱 꿀팁

다크 모드 CSS 대응법, 폰을 어둡게 했더니 입력창만 하얗게 뜰 때

다크 모드를 켠 휴대폰으로 홈페이지를 열었더니 배경은 어두운데 입력창과 스크롤바만 하얗게 남거나, 반대로 글자가 배경에 묻혀 안 보인다는 문의를 종종 받습니다.
대부분 color-scheme 선언이 없거나 색을 고정값으로 박아 둔 경우입니다. CSS 몇 줄로 라이트·다크를 정리하는 순서를 실무 기준으로 정리했습니다.

💡 왜 일부분만 색이 따로 놀까요?

입력창, 체크박스, 스크롤바 같은 기본 요소는 브라우저가 직접 그립니다. 브라우저는 페이지가 다크 모드를 지원한다고 알려 주지 않으면 이 요소들을 라이트 기준으로 그립니다. 그래서 배경만 CSS로 어둡게 바꾸면 기본 요소만 하얗게 튀는 화면이 나옵니다.

1. color-scheme으로 지원 범위부터 알려 주기

가장 먼저 할 일은 이 사이트가 어떤 모드를 지원하는지 브라우저에 알려 주는 것입니다. color-scheme을 선언하면 입력창, 셀렉트 박스, 스크롤바 같은 기본 요소가 그 모드에 맞는 색으로 바뀝니다.

/* 이 사이트는 라이트·다크 둘 다 지원 */
:root {
  color-scheme: light dark;
}

/* 라이트만 쓰는 사이트라면 */
:root {
  color-scheme: light;
}

아직 다크 디자인을 준비하지 못했다면 억지로 맞추기보다 light만 선언해 두는 편이 안전합니다. 크롬처럼 페이지 선언을 참고하는 브라우저에서는 의도하지 않은 색 변환이 줄어듭니다.

2. 색은 변수로 모으고 prefers-color-scheme으로 바꾸기

리뉴얼 현장에서 다크 대응이 어려운 이유는 대개 색상이 수십 곳에 #fff, #333처럼 흩어져 있기 때문입니다. 배경, 글자, 테두리 정도만이라도 CSS 변수로 모아 두면 prefers-color-scheme 미디어 쿼리 한 곳에서 값만 바꿔 끼울 수 있습니다.

:root {
  color-scheme: light dark;
  --bg: #ffffff;
  --text: #222222;
  --line: #e5e5e5;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #161616;
    --text: #e8e8e8;
    --line: #333333;
  }
}

body {
  background: var(--bg);
  color: var(--text);
}

최신 브라우저만 고려해도 되는 프로젝트라면 light-dark() 함수로 두 색을 한 줄에 쓸 수도 있습니다. 이 함수는 color-scheme이 선언되어 있어야 동작하고, 2024년 이후 출시된 주요 브라우저에서 지원됩니다. 관리 대상에 오래된 기기가 많다면 위의 변수 방식을 기본으로 두는 것이 무난합니다.

/* 최신 브라우저: 한 줄로 두 색 지정 */
.card {
  background: light-dark(#fff, #1f1f1f);
  border-color: light-dark(#e5e5e5, #333);
}

3. 다크 모드에서 놓치기 쉬운 부분 점검

색만 바꾸고 끝내면 실제 화면에서 어색한 곳이 꼭 나옵니다. 저희가 작업 후 확인하는 항목은 이 정도입니다.

  • 투명 배경 로고: 검은 글자 로고가 어두운 배경에 묻히지 않는지. 필요하면 다크용 로고를 <picture>와 media 속성으로 따로 지정합니다.
  • 순수 검정·순수 흰색: #000 배경에 #fff 글자는 눈이 부셔서 살짝 낮춘 회색 계열이 읽기 편합니다.
  • 그림자: 어두운 배경에서는 그림자가 거의 안 보이니 테두리 색으로 구분합니다.
  • 개발자 도구 확인: 크롬 F12 → 렌더링(Rendering) 패널의 prefers-color-scheme 에뮬레이션으로 휴대폰 설정을 바꾸지 않고도 바로 볼 수 있습니다.

삼성 인터넷 등 일부 브라우저는 자체 다크 모드가 페이지 설정과 따로 동작하기도 하니, 마지막에는 실제 휴대폰에서 한 번 열어 보는 것을 권합니다.

"방문자의 화면 설정까지 존중하는 것이 좋은 퍼블리싱입니다."

나눔웹은 리뉴얼 때 색상을 변수로 정리해 두어, 나중에 다크 모드나 색 변경이 필요할 때도 손이 덜 가도록 만듭니다.


List of Articles
번호 분류 제목 글쓴이
89 웹 성능 홈페이지 로딩 속도를 3배 높이는 '이미지 최적화' 실무 가이드 나눔웹
88 퍼블리싱 CSS 변수로 유지보수와 테마 기능을 한 번에! (CSS Custom Properties) 나눔웹
87 마케팅 카카오톡 링크 썸네일의 비밀! 클릭률을 높이는 '오픈 그래프(OG)' 세팅법 나눔웹
86 모바일 모바일 꽉 찬 화면 하단 짤림 현상! '100vh'의 함정과 완벽 해결법 나눔웹
85 웹 성능 홈페이지 첫 화면 글자 깜빡임(투명 현상) 1초 만에 해결하는 법 나눔웹
84 퍼블리싱 스마트폰에서 로고가 흐리게 보인다고요? 'SVG' 포맷이 정답입니다. 나눔웹
83 웹 성능 클릭 실수 유발하는 '화면 덜컹거림(CLS)', 단 한 줄로 해결하는 법 나눔웹
82 모바일 고객의 이탈을 막는 1초 디테일, '모바일 맞춤형 키보드' 세팅법 나눔웹
81 UI/UX 모바일에서 버튼 누를 때 생기는 촌스러운 '회색 박스' 없애는 법 나눔웹
80 UI/UX 레이아웃을 망치는 긴 글, 예쁘게 '...'으로 자르는 마법의 CSS 나눔웹
79 UI/UX 상단 메뉴에 제목이 가려진다고요? '부드러운 스크롤' 마법의 2줄 나눔웹
78 모바일 아이폰에서 입력창 누를 때 화면 '자동 확대'되는 현상 막는 법 나눔웹
77 퍼블리싱 지저분한 모바일 스크롤바, 기능은 남기고 쏙 숨기는 마법의 CSS 나눔웹
76 모바일 모바일 웹을 진짜 '앱(App)'처럼! 이미지 꾹 누를 때 뜨는 팝업 막기 나눔웹
75 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
74 퍼블리싱 무거운 플러그인 NO! 넷플릭스처럼 쫀득한 '가로 스와이프' CSS로 뚝딱 만들기 나눔웹
73 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
72 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
71 모바일 하단 고정 버튼이 아이폰 '검은 줄'에 겹친다면? (Safe Area 대응법) 나눔웹
70 모바일 앗, 실수로 새로고침! 튕기는 모바일 화면 꽉 잡는 법 (Overscroll) 나눔웹
Board Pagination Prev 1 2 3 4 5 Next
/ 5
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4