Post

[Frontend] Javascript로 다크모드 만들기

📌 들어가며

이번 글에서는 버튼 2개(야간/주간 모드)를 만들어, JavaScript로 웹페이지의 배경·글자색을 바꿔본다. HTML(구조)·CSS(디자인)에 이어 JS(동작)를 더하는 것이다.


1. 버튼으로 색 바꾸기

1
2
3
4
5
6
7
8
9
10
11
<!-- night 버튼 -->
<input type="button" value="night" onclick="
    document.querySelector('body').style.backgroundColor = 'black';
    document.querySelector('body').style.color = 'white';
">

<!-- day 버튼 -->
<input type="button" value="day" onclick="
    document.querySelector('body').style.backgroundColor = 'white';
    document.querySelector('body').style.color = 'black';
">

💡 document.querySelector('body')는 인자로 넣은 부분 전체에 영향을 줄 수 있는 실행문이다. 'body'를 넣으면 body 전체에 영향을 준다. onclick으로 버튼을 눌렀을 때 실행할 JS를 지정한다.

요소역할
onclick="..."클릭 시 실행할 JS
querySelector('body')body 요소 선택
.style.backgroundColor배경색 변경
.style.color글자색 변경

Desktop View Desktop View

night 버튼은 배경 검정·글자 흰색, day 버튼은 그 반대로 바뀐다.


2. 선택자 복습 (class / id / 태그)

1
2
3
4
5
6
<style>
    .js    { font-weight: bold; color: blue; }   /* class */
    .first { color: green; }
    #first { color: yellowgreen; }               /* id */
    span   { color: red; }                       /* 태그 */
</style>
선택자문법대상
태그span모든 span
class.jsclass=”js”인 것들 (여러 개 가능)
id#firstid=”first”인 것 (고유)

💡 class여러 요소에 공유할 수 있고, id한 요소에만 고유하게 붙인다. CSS 선택자로 스타일 대상을 정한다.


📝 정리

1
2
3
4
5
JS 다크모드
├─ 버튼      <input type="button" onclick="JS">
├─ 선택      document.querySelector('body')
├─ 스타일    .style.backgroundColor / .color
└─ 선택자    태그 / .class / #id
개념한 줄 정의
onclick클릭 시 JS 실행
querySelector요소를 선택
class vs id공유(다수) vs 고유(하나)

HTML(구조)·CSS(디자인)에 JS(동작)를 더하면 페이지가 상호작용한다. querySelector로 요소를 잡아 style을 바꾸는 것이, 모든 동적 UI의 기본 패턴이다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.