2026, 새로운 도약을 시작합니다.

다크 모드(Dark Mode) 지원을 위한 CSS 전략

· 7개월 전 · 641 · 1

안녕하세요! 다크 모드는 이제 웹사이트의 필수 기능이 되고 있습니다. CSS를 활용해 깔끔하게 다크 모드를 구현하는 방법을 알려드릴게요.

1. 시스템 설정 자동 전환: `prefers-color-scheme`

사용자의 운영체제(Windows, macOS 등) 설정에 따라 웹사이트의 테마를 자동으로 바꿔주는 방법입니다.

/* 기본 (라이트 모드) 스타일 */
body { background-color: #ffffff; color: #333333; }
.card { background-color: #f0f0f0; }

/* --- 다크 모드 스타일 (사용자 시스템이 다크 모드일 때 적용) --- */
@media (prefers-color-scheme: dark) {
    body { background-color: #1a1a1a; color: #e0e0e0; }
    .card { background-color: #2a2a2a; }
    /* 필요한 다른 요소들의 색상도 여기서 변경 */
}
 

`var(--변수명)`을 사용하여 색상 변수를 정의해두면, `@media` 안에서 이 변수 값만 바꿔주면 되어 관리가 훨씬 쉬워집니다.

2. 사용자 토글 버튼 구현 (수동 전환)

사용자가 직접 테마를 켜고 끌 수 있는 버튼을 만들 때는 CSS 변수와 JavaScript를 함께 사용합니다.

2.1. HTML (버튼)

html
<button id="theme-toggle" aria-label="다크 모드 전환"></button>
2.2. CSS (변수 정의)

`body`에 `.dark-mode` 클래스가 붙었을 때 색상 변수 값을 변경하도록 설정합니다.

root { /* 라이트 모드 기본 값 */
    --bg-color: #ffffff;
    --text-color: #333333;
}
.dark-mode { /* .dark-mode 클래스가 있을 때 */
    --bg-color: #1a1a1a;
    --text-color: #e0e0e0;
}
body {
    background-color: var(--bg-color);
    color: var(--text-color);
    transition: background-color 0.3s ease, color 0.3s ease; /* 부드러운 전환 */
}

2.3. 자바스크립트 (클래스 토글 및 저장)

* 버튼 클릭 시 `body`에 `.dark-mode` 클래스를 추가/제거하고, 사용자의 선택을 `localStorage`에 저장하여 페이지를 다시 열어도 테마가 유지되도록 합니다.

javascript
document.addEventListener('DOMContentLoaded', () => {
    const toggleButton = document.getElementById('theme-toggle');
    const body = document.body;

    // 저장된 테마 불러오기 또는 시스템 설정 따르기
    const savedTheme = localStorage.getItem('theme');
    if (savedTheme) {
        body.classList.add(savedTheme);
    } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
        body.classList.add('dark-mode');
    }

    // 버튼 클릭 시 테마 전환
    toggleButton.addEventListener('click', () => {
        if (body.classList.contains('dark-mode')) {
            body.classList.remove('dark-mode');
            localStorage.setItem('theme', ''); // 라이트 모드로 저장
        } else {
            body.classList.add('dark-mode');
            localStorage.setItem('theme', 'dark-mode');
        }
    });
});
 

그누보드/영카트 적용 팁:

* 사용 중인 테마의 CSS 파일에 다크 모드 스타일 을 추가하세요.
* `head.php` 또는 `tail.php` 파일에 다크 모드 토글 버튼과 관련된 자바스크립트코드를 넣어주면 됩니다.

|

댓글 1개

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

퍼블리셔팁

퍼블리싱과 관련된 유용한 정보를 공유하세요.
질문은 상단의 QA에서 해주시기 바랍니다.
번호 분류 제목 글쓴이 날짜 조회
1282 CSS 2주 전 조회 91
1281 CSS 3주 전 조회 79
1280 CSS 1개월 전 조회 78
1279 CSS 1개월 전 조회 188
1278 CSS 1개월 전 조회 188
1277 기타 3개월 전 조회 280
1276 CSS 4개월 전 조회 492
1275 CSS 4개월 전 조회 499
1274 CSS 4개월 전 조회 681
1273 기타 5개월 전 조회 579
1272 CSS 5개월 전 조회 708
1271 CSS 6개월 전 조회 770
1270 CSS 7개월 전 조회 642
1269 CSS 7개월 전 조회 714
1268 CSS 7개월 전 조회 577
1267 11개월 전 조회 758
1266 HTML 11개월 전 조회 1,031
1265 CSS 1년 전 조회 900
1264 2년 전 조회 1,380
1263 HTML 1년 전 조회 828
1262 CSS 1년 전 조회 1,127
1261 CSS 1년 전 조회 1,072
1260 HTML 2년 전 조회 1,597
1259 기타 2년 전 조회 875
1258 CSS 2년 전 조회 1,638
1257 HTML 2년 전 조회 1,510
1256 CSS 2년 전 조회 1,338
1255 2년 전 조회 3,694
1254 2년 전 조회 5,155
1253 2년 전 조회 1,703
🐛 버그신고