본문 바로가기
JavaScript

[JavaScript] 다크 모드 토글 기능 구현

by teamnova 2024. 7. 2.
728x90

안녕하세요.

오늘은 다크모드 토글 기능을 구현 해보겠습니다.

 

index.html 파일을 생성해줍니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>다크모드 토글</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
    <h1>다크모드 토글 예시</h1>
    <button id="darkModeToggle">다크모드 토글</button>
</div>
<script src="script.js"></script>
</body>
</html>

 

styles.css

/* styles.css */

body {
    transition: background-color 0.5s, color 0.5s;
}

.container {
    text-align: center;
    margin-top: 50px;
}

button {
    padding: 10px 20px;
    font-size: 16px;
    cursor: pointer;
}

.light-mode {
    background-color: white;
    color: black;
}

.dark-mode {
    background-color: black;
    color: white;
}

 

JavaScript

// script.js

document.addEventListener('DOMContentLoaded', (event) => {
    const toggleButton = document.getElementById('darkModeToggle');
    const body = document.body;

    const savedMode = localStorage.getItem('darkMode');
    if (savedMode) {
        body.classList.add(savedMode);
    }

    toggleButton.addEventListener('click', () => {
        if (body.classList.contains('dark-mode')) {
            body.classList.remove('dark-mode');
            body.classList.add('light-mode');
            localStorage.setItem('darkMode', 'light-mode');
        } else {
            body.classList.remove('light-mode');
            body.classList.add('dark-mode');
            localStorage.setItem('darkMode', 'dark-mode');
        }
    });
});

 

 

해당 코드를 실행한 결과 입니다.