본문 바로가기
STUDY/javascript

[JavaScript] classList 다루기

by 히컵 2024. 8. 23.

 

 

 

버튼을 누르면 등장하는 서브메뉴를 만들며 자바스크립트로 class 탈부착하는 문법을 배워 보자.

 

 

Bootstrap 설치

Bootstrap css 파일을 설치해 놓으면 버튼, 탭, 메뉴 같은 걸 가지고 와서 개발할 수 있다.

1. Bootstrap 공식 사이트(https://getbootstrap.com/)에서 get started 버튼을 누른다.

2. 우측 위에서 버진이 5.x 버전인지 확인한다.

3. css 파일은 <head> 태그 안, js 파일은 <body>태그 끝나기 전에 붙여 넣으면 설치는 끝이다.

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>

 

 

 

Navbar 만들기

Bootstrap 사이트에 원하는 웹 UI를 검색해서 복사 붙여넣기 하면 된다.

상단 메뉴 Navbar부터 만들어 보자.

(index.html)
<nav class="navbar navbar-light bg-light">
  <div class="container-fluid">
    <span class="navbar-brand">Navbar</span>
    <button class="navbar-toggler" type="button">
      <span class="navbar-toggler-icon"></span>
    </button>
  </div>
</nav>

이러면 상단바 제작은 끝이다.

 

 

그러면 이제 버튼 누르면 등장하는 서브 메뉴를 만들어 보자.

 

1. HTML/CSS 디자인

(index.html)
<ul class="list-group">
    <li class="list-group-item">An item</li>
    <li class="list-group-item">A second item</li>
    <li class="list-group-item">A third item</li>
    <li class="list-group-item">A fourth item</li>
    <li class="list-group-item">And a fifth one</li>
</ul>

Bootstrap 홈페이지에서 list group 찾아 <nav> 밑에 넣었다.

(main.css)
.list-group {display: none;}
.show {display: block;}

평소에 .list-group 붙은 요소는 숨겨 놓고 show라는 클래스를 부착하면 보여주도록 한다.

 

 

2. 버튼을 누르면 보여 달라고 자바스크립트 코드 작성

버튼을 눌렀을 때 .list-group 요소에 show라는 클래스를 추가해야 한다.

class명을 원하는 요소에 추가하는 법은 셀렉터로 찾은 요소.classList.add('클래스명')

class명을 원하는 요소에 제거하는 법은 셀렉터로 찾은 요소.classList.remove('클래스명') 

document.getElementsByClassName('navbar-toggler')[0].addEventListener('click', function(){
    document.getElementsByClassName('list-group')[0].classList.add('show');
});

class="navbar-toggler" 가진 요소 클릭하면 class="list-group"인 요소에 show라는 클래스명을 추가하라고 코드를 작성했다. 이제 버튼을 누르면 서브 메뉴가 잘 보인다.

 

 

 버튼을 한 번 더 누르면 서브 메뉴를 숨겨 보자.

document.getElementsByClassName('navbar-toggler')[0].addEventListener('click', function(){
    document.getElementsByClassName('list-group')[0].classList.toggle('show');
});

쉬운 방법은 클래스명이 있으면 제거하고, 클래스명이 없으면 붙여 주는 .classList.toggle() 사용하는 것이다.

 

 

실행 화면

 

 

 

 


 

 

querySelector , querySelector All 셀렉터

querySelector는 getElementById(), getElementsByClassNamme()와 다른 방식으로 html 요소를 찾아 주는 셀렉터이다.

<div class="test1">안녕하세요.</div>
<div id="test2">안녕하세요.</div>

<script>
    document.querySelector('.test1').innerHTML = '안녕';
    document.querySelector('#test2').innerHTML = '안녕';
</script>

querySelector() 안에는 css 셀렉터 문법을 사용할 수 있다. (css에서 마침표는 class, #은 id라는 뜻)

다만 querySelector()는 맨 위의 한 개 요소만 선택해 준다.

 

<div class="test1">안녕하세요.</div>
<div class="test1">안녕하세요.</div>

<script>
    document.querySelectorAll('.test1')[1].innerHTML = '안녕';
</script>

위처럼 test1이라는 클래스가 중복으로 여러개 있는데 n번째 요소를 선택하고 싶은 경우에는 querySelectorAll()을 사용하면 된다.

queySelectorAll()은 해당하는 걸 다 찾아서 [ ]안에 담아 준다. 그래서 [숫자]를 뒤에 붙여 원하는 위치에 있는 요소를 찾아 쓰면 된다.

 

 

 

 

 

 

* 이 포스팅은 코딩애플 강의를 토대로 작성하였습니다.