Tailwind - 다크모드

2025. 2. 13. 00:07·FE/CSS

 

Tailwind - 다크모드

#Web/CSS


Tailwind는 다크 모드를 적용할 수 있는 유틸리티 클래스를 제공하며, 기본적으로 운영 체제의 선호도에 따라 다크 모드를 적용하거나, 사용자가 직접 선택할 수 있게끔 설정할 수 있다.


예시: dark 유틸리티

<div
  class="bg-white dark:bg-slate-800 text-slate-900 dark:text-white p-6 rounded-lg shadow-md max-w-lg"
>
  <h3 class="text-lg font-bold">Writes Upside-Down</h3>
  <p class="text-slate-600 dark:text-slate-400">
    The Zero Gravity Pen can be used to write in any orientation, including
    upside-down. It even works in outer space.
  </p>
</div>

평시와, 다크 모드가 활성화되었을 때 스타일을 각각 지정한다.


다크 모드 전환 전략

운영 체제 선호도 사용 (기본 전략,media)

Tailwind는 기본적으로 운영 체제의 다크 모드 선호도에 따라 스타일을 적용합니다. 이를 위해 CSS의 prefers-color-scheme 미디어 쿼리를 사용합니다. (별도의 설정 없이 필요 없다.)


수동으로 다크 모드 전환 (선택자 전략,selector)

다크 모드를 수동으로 전환하려면 Tailwind 설정 파일에 다크 모드를 선택자로 설정해야 한다.

// tailwind.config.js
module.exports = {
  darkMode: 'selector', // 선택자 전략(수동 전환)
  // ...
}

<html>
  <body class="dark">
    <div class="bg-white dark:bg-black text-slate-900 dark:text-white p-6 rounded-lg">
      다크 모드에서는 배경이 검정색으로 변합니다.
    </div>
  </body>
</html>

여기서 dark 클래스를또는태그에 추가하면 다크 모드가 활성화된다.


다크모드 토글 구현

button의 onclick에 메서드를 지정하여 다크 모드 토글 기능을 구현해보자.


<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Tailwind CSS 다크 모드 실습</title>
  <script src="https://cdn.tailwindcss.com"></script>
  <script>
    // Tailwind 설정에서 다크 모드를 selector로 설정
    tailwind.config = {
      // darkMode: 'media', // 운영 체제의 모드에 맞게 설정
      darkMode: 'selector', // 수동으로 설정
    }
  </script>
  <script>
    function toggleDarkMode() {
      document.documentElement.classList.toggle('dark');
    }
  </script>
</head>
<body class="bg-white dark:bg-gray-900 text-black dark:text-white min-h-screen flex items-center justify-center">
  <div class="text-center">
    <h1 class="text-4xl font-bold mb-4">Tailwind CSS 다크 모드</h1>
    <p class="mb-6">이 페이지는 다크 모드를 지원합니다.</p>
    <button onclick="toggleDarkMode()" class="bg-blue-500 text-white px-4 py-2 rounded">
      다크 모드 전환
    </button>
    <div class="mt-6 bg-white dark:bg-gray-800 p-6 rounded-lg shadow-lg">
      <p>이 박스는 다크 모드에서 배경이 어두운 색으로 변합니다.</p>
    </div>
  </div>
</body>
</html>

로컬 스토리지에 다크 모드 설정 캐싱해두기

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Tailwind CSS 다크 모드 실습</title>
  <script src="https://cdn.tailwindcss.com"></script>
  <script>
    // Tailwind 설정에서 다크 모드를 selector로 설정
    tailwind.config = {
      // darkMode: 'media', // 운영 체제의 모드에 맞게 설정
      darkMode: 'selector', // 수동으로 설정
    }
  </script>
  <script>
    if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
      document.documentElement.classList.add('dark');
    } else {
      document.documentElement.classList.remove('dark');
    }

    function toggleDarkMode() {
      if (document.documentElement.classList.contains('dark')) {
        document.documentElement.classList.remove('dark');
        localStorage.theme = 'light';
      } else {
        document.documentElement.classList.add('dark');
        localStorage.theme = 'dark';
      }
    }
  </script>
</head>
<body class="bg-white dark:bg-gray-900 text-black dark:text-white min-h-screen flex items-center justify-center">
  <div class="text-center">
    <h1 class="text-4xl font-bold mb-4">Tailwind CSS 다크 모드</h1>
    <p class="mb-6">이 페이지는 다크 모드를 지원합니다.</p>
    <button onclick="toggleDarkMode()" class="bg-blue-500 text-white px-4 py-2 rounded">
      다크 모드 전환
    </button>
    <div class="mt-6 bg-white dark:bg-gray-800 p-6 rounded-lg shadow-lg">
      <p>이 박스는 다크 모드에서 배경이 어두운 색으로 변합니다.</p>
    </div>
  </div>
</body>
</html>

Reference)
Tailwind CSS 공식 문서
짐코딩님 Tailwind CSS 완전 정복

'FE > CSS' 카테고리의 다른 글

Tailwind - 트랜지션, 애니메이션  (0) 2025.02.13
Tailwind - 반응형 디자인  (0) 2025.02.13
Tailwind - Layout(Container, Flexbox, Grid, Position)  (0) 2025.02.13
Tailwind - Core(Utility-First CSS, State)  (0) 2025.02.13
Tailwind - 간격 조절, Sizing  (0) 2025.02.13
'FE/CSS' 카테고리의 다른 글
  • Tailwind - 트랜지션, 애니메이션
  • Tailwind - 반응형 디자인
  • Tailwind - Layout(Container, Flexbox, Grid, Position)
  • Tailwind - Core(Utility-First CSS, State)
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (463)
      • 개발 일지 (0)
        • Performance (0)
        • TroubleShooting (0)
        • Refactoring (0)
        • Code Style, Convetion (0)
        • Architecture (0)
      • Software Engineering (36)
        • Test (8)
        • 이론 (18)
        • Clean Code (10)
      • Java (72)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (13)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (16)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (130)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (6)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
Tailwind - 다크모드
상단으로

티스토리툴바