
1. 색깔 확인하기
- index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <!--style.css 적용하기--> <title>Hello From HTML</title> </head> <body> <div class="hello"> <h1>Hello!</h1> </div> <div class="hello"> <h1>Hello!</h1> </div> <div class="hello"> <h1>Hello!</h1> </div> <script src="app.js"></script> <!--app.js 적용하기--> </body> </html>
- app.js
const h1 = document.querySelector(".hello h1:first-child"); // HTML의 요소 가져오기 function handleTilteClick(){ // 클릭시 이벤트 console.log(h1.style.color); h1.style.color = "blue"; console.log(h1.style.color); } h1.addEventListener("click", handleTilteClick);

2. 가정법 사용하기
- app.js
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { // 클릭 시 이벤트 if (h1.style.color === "blue") { h1.style.color = "tomato"; } else { h1.style.color = "blue"; } } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출



3. 현재 상태 저장하기
- app.js
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { // 클릭 시 이벤트 const currentColor = h1.style.color; let newColor; if (currentColor === "blue") { newColor = "tomato"; } else { newColor = "blue"; } h1.style.color = newColor; } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출



4. CSS 파일에서 적용하기
- className 사용하기
- app.js
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { h1.className = "active"; } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출
body { background-color: beige; } h1 { color: cornflowerblue; } .active{ color: tomato; }


- 가정법 사용하기
- app.js
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { if(h1.className === "active"){ h1.className = ""; } else { h1.className = "active"; } } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출


transition
사용하기- 요소의 속성 값이 변화할 때 애니메이션 효과를 부드럽게 적용하는 데 사용
- 속성 값이 변화할 때 즉시가 아니라, 일정 시간 동안 부드럽게 변경되게 함
body { background-color: beige; } h1 { color: cornflowerblue; transition: color .5s ease-in-out; } .active{ color: tomato; }


- 오류의 위험 줄이기
- 정확한 변수명 사용하기
- 변수를 선언해서 사용하기
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { const clickedClass = "clicked"; if(h1.className === clickedClass){ h1.className = ""; } else { h1.className = clickedClass; } } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출


- classList 사용하기
- class들의 목록으로 작업할 수 있게 허용해 줌
- className은 이전 class에 상관없이 다 교체해버림
- contains : 확인하기
- index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <!--style.css 적용하기--> <title>Hello From HTML</title> </head> <body> <div class="hello"> <h1 class="hi">Hello!</h1> </div> <div class="hello"> <h1>Hello!</h1> </div> <div class="hello"> <h1>Hello!</h1> </div> <script src="app.js"></script> <!--app.js 적용하기--> </body> </html>
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { const clickedClass = "clicked"; if(h1.classList.contains(clickedClass)){ // clicked가 포함되어있는지 확인 h1.className = ""; } else { h1.className = clickedClass; } } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출


const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { const clickedClass = "clicked"; if (h1.classList.contains(clickedClass)) { // clickedClass가 포함되어 있는지 확인 h1.classList.remove(clickedClass); // clickedClass 제거 } else { h1.classList.add(clickedClass); // clickedClass 추가 } } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출


- toggle 이용하기
- classList 내에 clicked classrk 있다면 clicked를 제거해주고 없으면 clicked를 추가해줌
- app.js
const h1 = document.querySelector("div.hello:first-child h1"); // HTML의 요소 가져오기 function handleTitleClick() { h1.classList.toggle("clicked"); } h1.addEventListener("click", handleTitleClick); // 클릭 시 handleTitleClick 함수 호출


Share article