다크 모드 웹사이트 구현: CSS 변수 활용 (팁 3개)

다크 모드는 눈의 피로를 줄이고 사용자 경험을 개선하는 데 유용한 기능입니다. 다크 모드는 특히 모바일과 같은 다양한 환경에서 효과적이며, 사용자 개인의 선호도에 맞게 테마를 조절할 수 있어 인기 있는 디자인 옵션입니다.

1. 다크 모드와 CSS 변수의 기본 이해

CSS 변수는 일관된 스타일 관리에 유용한 CSS 기능입니다. 변수에 색상, 크기 등의 값을 저장해두면 전체 CSS에서 이 변수를 반복적으로 사용할 수 있어 유지보수가 쉬워지고 스타일 변경이 간편해집니다. 다크모드에서는 CSS 변수에 저장된 색상 값을 다크 테마에 맞게 변경하여 손쉽게 테마 전환이 가능합니다.


2. CSS 변수 설정하기

먼저, 일반 모드와 다크모드에 사용할 색상을 정의하고, 이를 CSS 변수로 설정합니다. 일반적으로 :root 선택자를 사용해 변수의 기본 값을 설정하며, 다크모드를 위해 .dark-mode 클래스를 추가로 정의합니다.

:root {
    --bg-color: #ffffff;
    --text-color: #333333;
    --primary-color: #4a90e2;
}

.dark-mode {
    --bg-color: #1e1e1e;
    --text-color: #cccccc;
    --primary-color: #007acc;
}

위 코드에서 –bg-color, –text-color, –primary-color는 일반 모드와 다크 모드 각각에 적합한 색상으로 정의되었습니다.


3. CSS 변수를 활용한 스타일 적용

이제 CSS 변수들을 사용하여 웹사이트의 배경, 텍스트 색상 등에 적용합니다. 다음 예시는 각 요소에 정의된 CSS 변수를 활용하여 색상을 설정하는 방식입니다.

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

a {
    color: var(--primary-color);
}

이처럼 var() 함수를 통해 CSS 변수에 저장된 값을 불러와 스타일에 적용할 수 있습니다. 이를 통해 모드 전환 시 전체적인 스타일을 빠르게 변경할 수 있습니다.


4. 다크 모드 전환 기능 구현하기

다크모드를 적용하려면 자바스크립트를 사용하여 .dark-mode 클래스를 body에 추가하거나 제거하는 기능이 필요합니다. 이를 위해 버튼을 클릭하여 모드를 전환할 수 있는 자바스크립트 코드를 작성할 수 있습니다.

<button id="toggle-mode">Toggle Dark Mode</button>

위 버튼을 통해 다크모드를 전환할 수 있도록, 다음과 같은 자바스크립트 코드를 작성합니다.

const toggleButton = document.getElementById('toggle-mode');
toggleButton.addEventListener('click', () => {
    document.body.classList.toggle('dark-mode');
});

위 코드에서 버튼을 클릭하면 body에 .dark-mode 클래스가 추가되거나 제거됩니다. CSS에 설정된 다크모드 변수들이 적용되어 전체 스타일이 다크모드로 변경됩니다.


5. 사용자 선호도에 따른 자동 다크 모드 설정

사용자의 선호도에 따라 자동으로 다크모드를 적용하는 방법도 있습니다. CSS prefers-color-scheme 미디어 쿼리를 사용하면 브라우저나 시스템에서 설정한 기본 테마에 따라 웹사이트의 모드를 자동으로 조정할 수 있습니다.

@media (prefers-color-scheme: dark) {
    :root {
        --bg-color: #1e1e1e;
        --text-color: #cccccc;
        --primary-color: #007acc;
    }
}

위와 같이 미디어 쿼리를 사용하면 사용자의 시스템 설정에 따라 다크모드를 자동으로 활성화할 수 있습니다. 이 방법은 사용자 경험을 향상시키는 데 매우 유용합니다.


6. 다크 모드 전환 상태 유지하기

사용자가 선택한 테마 설정을 기억하기 위해 localStorage를 활용할 수 있습니다. 이를 통해 페이지를 새로고침하거나 사이트를 다시 방문하더라도 이전에 설정한 모드가 유지되도록 할 수 있습니다.

const toggleButton = document.getElementById('toggle-mode');

// 초기 설정
if (localStorage.getItem('theme') === 'dark') {
    document.body.classList.add('dark-mode');
}

toggleButton.addEventListener('click', () => {
    document.body.classList.toggle('dark-mode');
    const theme = document.body.classList.contains('dark-mode') ? 'dark' : 'light';
    localStorage.setItem('theme', theme);
});

이 코드는 사용자가 다크모드를 선택하면 localStorage에 ‘dark’를 저장하고, 다시 방문할 때 해당 값을 확인하여 자동으로 다크모드를 적용합니다. 이를 통해 사용자의 테마 설정을 지속적으로 유지할 수 있습니다.


7. 다크 모드 최적화 팁

다크모드를 구현할 때 다음과 같은 팁을 고려하면 더 나은 사용자 경험을 제공할 수 있습니다.

  • 적절한 대비 조정: 다크 모드에서는 텍스트 대비가 낮으면 읽기 어려울 수 있습니다. 배경색과 텍스트 색상의 대비를 높여 가독성을 유지하는 것이 중요합니다.
  • 이미지 및 아이콘 최적화: 다크 모드에서도 잘 보이도록 이미지와 아이콘의 색상을 조정하거나 투명한 PNG, SVG를 사용하는 것이 좋습니다.
  • 상황에 맞는 전환 애니메이션: 모드 전환 시 transition을 사용하여 색상이 부드럽게 변경되도록 설정하면 자연스러운 사용자 경험을 제공합니다.

8. 예제 코드: 다크 모드 구현을 종합한 코드

이제 앞서 설명한 요소들을 모두 포함한 예제 코드를 확인해보겠습니다.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dark Mode Example</title>
<style>
    :root {
        --bg-color: #ffffff;
        --text-color: #333333;
        --primary-color: #4a90e2;
    }

    .dark-mode {
        --bg-color: #1e1e1e;
        --text-color: #cccccc;
        --primary-color: #007acc;
    }

    body {
        background-color: var(--bg-color);
        color: var(--text-color);
        transition: background-color 0.3s ease, color 0.3s ease;
    }

    a {
        color: var(--primary-color);
    }
</style>
</head>
<body>
    <button id="toggle-mode">Toggle Dark Mode</button>
    <p>Welcome to our website with dark mode functionality!</p>

    <script>
        const toggleButton = document.getElementById('toggle-mode');

        if (localStorage.getItem('theme') === 'dark') {
            document.body.classList.add('dark-mode');
        }

        toggleButton.addEventListener('click', () => {
            document.body.classList.toggle('dark-mode');
            const theme = document.body.classList.contains('dark-mode') ? 'dark' : 'light';
            localStorage.setItem('theme', theme);
        });
    </script>
</body>
</html>

CSS 변수와 자바스크립트를 활용하여 다크 모드를 간단하게 구현할 수 있으며, prefers-color-scheme 미디어 쿼리와 localStorage를 통해 사용자의 선호도를 반영하고 유지할 수 있습니다. 다크 모드는 사용자 편의성을 높여주고, 다양한 환경에서의 접근성을 향상시키는 데 큰 기여를 합니다. 이를 통해 더 많은 사용자에게 친화적인 웹사이트를 구축해 보세요.

이 게시물이 얼마나 유용했습니까?

평점을 매겨주세요.

평균 평점 0 / 5. 투표수: 0

지금까지 투표한 사람이 없습니다. 가장 먼저 게시물을 평가해 주세요.

error: 우클릭이 불가능 합니다.