"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 더 나은 사용자 경험을 위해 기본 색 구성표 설정을 재정의하는 방법은 무엇입니까?

더 나은 사용자 경험을 위해 기본 색 구성표 설정을 재정의하는 방법은 무엇입니까?

2024년 11월 10일에 게시됨
검색:766

How to Override the Native Color-Scheme Setting for a Better User Experience?

기본 색 구성표 설정 재정의

다양한 운영 체제에서 널리 채택되면서 다크 모드 구현이 중요해졌습니다. 기본 브라우저 지원은 CSS 미디어 규칙 @media(prefers-color-scheme: dark)를 통해 존재하지만 사용자 기본 설정을 완전히 처리하지 못하거나 Microsoft Edge와 같은 지원되지 않는 브라우저를 충족시키지 못할 수 있습니다.

시스템 설정 분리 웹사이트 테마에서

최적의 사용자 제어를 제공하려면 사용자가 시스템의 색 구성표 설정을 재정의할 수 있도록 허용하는 것이 중요합니다. 이를 통해 고객은 특정 웹사이트에 대해 선호하는 테마를 선택할 수 있습니다. 이를 달성하기 위해 CSS 변수와 JavaScript의 조합이 활용됩니다.

CSS 구성

CSS 변수는 테마 매개변수를 정의합니다:

:root {
  --font-color: #000;
  --link-color: #1C75B9;
  --link-white-color: #fff;
  --bg-color: rgb(243,243,243);
}

[data-theme="dark"] {
  --font-color: #c1bfbd;
  --link-color: #0a86da;
  --link-white-color: #c1bfbd;
  --bg-color: #333;
}

변수는 유연성을 보장하기 위해 스타일시트 전체에서 사용됩니다.

body {
  color: #000;
  color: var(--font-color);
  background: rgb(243,243,243);
  background: var(--bg-color);
}

JavaScript 구현

JavaScript는 사용자 기본 설정을 감지하고 테마 간 전환에 중추적인 역할을 합니다.

function detectColorScheme() {
  let theme = "light";

  if (localStorage.getItem("theme") == "dark") {
    theme = "dark";
  } else if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
    theme = "dark";
  }

  if (theme == "dark") {
    document.documentElement.setAttribute("data-theme", "dark");
  }
}

detectColorScheme();

toggleTheme 함수는 테마 전환을 처리합니다:

function switchTheme(e) {
  if (e.target.checked) {
    localStorage.setItem('theme', 'dark');
    document.documentElement.setAttribute('data-theme', 'dark');
  } else {
    localStorage.setItem('theme', 'light');
    document.documentElement.setAttribute('data-theme', 'light');
  }  
}

이 JavaScript는 자동 테마 감지를 보장하고 사용자가 확인란을 사용하여 테마를 재정의할 수 있도록 합니다.

결론

CSS 변수와 JavaScript를 결합하여 사용자가 시스템 설정에 관계없이 웹사이트의 색 구성표를 제어할 수 있는 기능을 제공합니다. . 이 접근 방식은 개인의 선호도와 다양한 브라우저의 제한 사항을 충족하면서 향상된 사용자 경험을 보장합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3