HTML, CSS

[CSS]다크모드 구현

FE코크 2021. 1. 30. 12:30

DarkMode

다크모드는 소프트웨어에서 하얀 배경화면 대신에 검은 또는 어두운 배경화면을 지원하는 것을 말한다. 어두운 곳에서 눈의 피로를 줄이기도 하고 사람들의 선호에 맞게 다크모드를 사용한다.

Prefers-color-scheme

다크모드를 prefers-color-scheme CSS미디어쿼리를 사용하여 적용할 수 있다.

 

<div class="themed">Theme</div>

 

 

.themed {
  display: block;
  width: 10em;
  height: 10em;
  background: black;
  color: white;
}

@media (prefers-color-scheme: light) {
  .themed {
    background: white;
    color: black;
  }
}

 

CSS 변수 선언하기

CSS로 변수를 선언해서 다크모드를 만들면 더 편한다.

 

:root {
  --color-background: white;
  --color-text-color: black;
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-background: black;
    --color-text-color: white;
  }
}

.themed {
  background: var(--color-background);
  color: var(--color-text-color);
}

 

 

모드 선택하기

체크박스를 사용하여 사용자가 모드를 변경할수 있게 만들어 시스템상의 테마가 아닌 사용자가 변경하도록 만들어 보겠습니다.

 

See the Pen RwowePO by intae92 (@intae92) on CodePen.

 

 

 

localStorage

사용자가 모드를 선택할 수 있게 만들었지만 브라우저를 새로고침 하면 현재 모드를 기억하지 못한다. localStorage를 활용하여 다크 모드 유무를 기억하고 localStorage에 다크모드 유무에 대한 정보가 없으면 시스템상에서의 다크모드 유무를 window.matchMedia()로 확인해서 적용시키도록 구현합니다.

 

See the Pen oNYNaYJ by intae92 (@intae92) on CodePen.

 

 

 

 

 

 

 

 

 

참고

marshall-ku.com/web/tips/%EC%9B%B9%EC%97%90%EC%84%9C-%EB%8B%A4%ED%81%AC-%EB%AA%A8%EB%93%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

웹에서 다크 모드 구현하기

다크 모드(다크 테마)란, 밝은 배경에 어두운 글자 대신 어두운 배경에 밝은 글자를 사용하는 것입니다. 눈의 피로를 줄이기 위해 선호하는 사람이 꽤 있고, 콘트라스트(Contrast)가 높아지기에 텍

marshall-ku.com

velog.io/@yijaee/%EB%8B%A4%ED%81%AC%EB%AA%A8%EB%93%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

다크모드 구현하기

다크모드란 일반적으로 더 어두운 색상 팔레트를 사용하는 UI를 말한다. 쉽게 말하면 어두운 배경에 밝은 색상의 요소를 사용하는 것이다. 그러나 어떤 배경(라이트/다크)을 가지고 있더라도 웹

velog.io

edykim.com/ko/post/dark-mode/

 

웹페이지 다크 모드 지원하기

웹페이지 다크 모드 지원은 미디어 쿼리를 사용해서 적용할 수 있다. 각 해상도에 따라 미디어 쿼리를 적용하는 방식과 크게 다르지 않다. 이제 해당 페이지는 다크 모드로 지정했다면 해당 스

edykim.com

developer.mozilla.org/ko/docs/Web/CSS/:root

 

:root - CSS: Cascading Style Sheets | MDN

CSS :root 의사 클래스는 문서 트리의 루트 요소를 선택합니다 HTML의 루트 요소는 요소이므로, :root의 명시도가 더 낮다는 점을 제외하면 html 선택자와 똑같습니다. :root { background: yellow; }:root는 전

developer.mozilla.org

developer.mozilla.org/ko/docs/Web/CSS/@media/prefers-color-scheme

 

prefers-color-scheme - CSS: Cascading Style Sheets | MDN

prefers-color-scheme CSS 미디어 특성은 사용자의 시스템이 라이트 테마나 다크 테마를 사용하는지 탐지하는 데에 사용됩니다. no-preference 사용자가 시스템에 선호하는 테마를 알리지 않았음을 나타

developer.mozilla.org