Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML DOM classList 속성 – CSS 클래스 추가·삭제·토글하기

HTML DOM의 classList 속성은 HTML 요소에 연결된 클래스 이름들을 반환합니다. 반환값은 DOMTokenList 형태로, 공백으로 구분된 토큰(클래스 이름)들의 집합입니다. 이 속성을 활용하면 요소에 CSS 클래스를 추가하거나 삭제하고, 상태에 따라 토글하는 작업을 간편하게 처리할 수 있습니다.

classList 속성 자체는 읽기 전용(read-only)이지만, add()와 remove() 같은 메서드를 함께 사용하면 요소의 클래스를 자유롭게 조작할 수 있습니다.

classList의 주요 속성

classList에서 제공하는 속성은 다음과 같습니다.

속성설명
length목록에 포함된 클래스의 개수를 반환합니다. 읽기 전용 속성입니다.

classList의 주요 메서드

classList에서 사용할 수 있는 메서드는 다음과 같습니다.

메서드설명
add(class1, class2, class3...)요소에 하나 이상의 클래스 이름을 추가합니다. 이미 존재하는 클래스는 중복해서 추가되지 않습니다.
contains(class)요소가 지정한 클래스 이름을 가지고 있는지 여부를 불리언 값으로 반환합니다. true면 해당 클래스가 존재하고, false면 존재하지 않음을 의미합니다.
item(index)지정한 인덱스 위치의 클래스 이름을 반환합니다. 인덱스는 0부터 시작하며, 범위를 벗어나면 null을 반환합니다.
remove(class1, class2, class3...)요소에서 하나 이상의 클래스 이름을 제거합니다. 제거하려는 클래스가 존재하지 않더라도 오류가 발생하지 않습니다.
toggle(class, true|false)클래스를 토글합니다. 첫 번째 매개변수로 전달한 클래스가 없으면 추가한 뒤 true를 반환하고, 이미 존재하면 제거한 뒤 false를 반환합니다. 두 번째 매개변수는 선택 사항으로, 불리언 값을 넘기면 기존 존재 여부와 관계없이 클래스를 강제로 추가(true)하거나 제거(false)할 수 있습니다.

구문(Syntax)

classList 속성의 기본 구문은 다음과 같습니다.

element.classList

예제

HTML DOM classList 속성의 실제 동작을 예제를 통해 확인해 보겠습니다.

<!DOCTYPE html>
<html>
<head>
<style>
   .firstDiv {
      width: 200px;
      height: 200px;
      padding: 15px;
      border: 1px double blue;
      position:relative;
      top:10px;
   }
   .secondDiv {
      background-color: lightgreen;
      color: red;
   }
   .thirdDiv {
      text-transform: capitalize;
      text-align: center;
      font-size: 30px;
   }
</style>
</head>
<body>
<p>Click the below button to add class to the below div element</p>
<button onclick="classAdd()">ADD CLASS</button>
<br>
<div id="DIV1">
sample div
</div>
<script>
   function classAdd() {
      document.getElementById("DIV1").classList.add("firstDiv", "secondDiv", "thirdDiv");
   }
</script>
</body>
</html>

출력 결과

위 코드를 실행하면 다음과 같은 화면이 나타납니다.

HTML DOM classList 속성 – CSS 클래스 추가·삭제·토글하기

ADD CLASS 버튼을 클릭하면 다음과 같이 변합니다.

HTML DOM classList 속성 – CSS 클래스 추가·삭제·토글하기

코드 분석

위 예제에서는 먼저 div 요소 하나와, 나중에 이 div에 적용할 세 개의 CSS 스타일 클래스를 정의했습니다.

.firstDiv {
   width: 200px;
   height: 200px;
   padding: 15px;
   border: 1px double blue;
   position:relative;
   top:10px;
}
.secondDiv {
   background-color: lightgreen;
   color: red;
}
.thirdDiv {
   text-transform: capitalize;
   text-align: center;
   font-size: 30px;
}
<div id="DIV1">
sample div
</div>

그다음, 클릭 시 classAdd() 함수를 실행하는 ADD CLASS 버튼을 만들었습니다.

<button onclick="classAdd()">ADD CLASS</button>

classAdd() 함수는 id가 "DIV1"인 요소, 즉 위 예제의 <div> 요소를 가져온 뒤, classList 속성의 add() 메서드를 사용해 firstDiv, secondDiv, thirdDiv 세 개의 클래스를 한꺼번에 추가합니다.

function classAdd() {
   document.getElementById("DIV1").classList.add("firstDiv", "secondDiv", "thirdDiv");
}