본문 바로가기

자바스크립트 기기기초

#3.7 CSS in Javascript part Two

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css"> //css파일 연결
    <title>Hello from HTML!</title>
</head>
<body>
    <div class="hello">
        <h1 class="sexy-font">Click Me!</h1>
    </div>
    
    <script src="app.js"></script> //js파일 연결
</body>
</html>
body{
    background-color: beige;
}

h1{
    color: blue;
    transition: color.5s ease-in-out;
}

.clicked{ /*clicked라는 이름의 클래스 생성*/
    color: tomato;
}

.sexy-font{
    font-family: 'Courier New', Courier, monospace;
}
const h1 = document.querySelector(".hello h1");

function mouseClick(){
    const clickedClass = "clicked sexy-font"; //string을 변수에 저장해서 이름 잘못쳐서 에러날수 있는거 방지
    if(h1.className === clickedClass){ //className이 getter이자 setter임
        h1.className = "";
    }else{
        h1.className = clickedClass;
    }
}

h1.addEventListener("click",mouseClick);
  • 마우스를 클릭하면 h1의 className이 clickedClass(할당된)라는 Class가 생성됨
  • 한번 더 클릭하면 h1의 className은 공백이 됨
  • 근데 애초에 h1에 sexy-font라는 class가 존재한다면 클릭이벤트를 발생했을때 sexy-font를 없애고 clicked로만 냅다 할당해버림 -> 그래서 sexy-font의 css는 무시됨
  • 그래서 clickedClass = "clicked sexy-font"라고 써준거

'자바스크립트 기기기초' 카테고리의 다른 글

#4.0 Input Values  (0) 2023.02.06
#3.8 CSS in Javascript part Three  (0) 2023.02.06
#3.6 CSS in Javascript  (0) 2023.02.04
#3.5 More Events  (0) 2023.02.03
#3.4 Events part Two  (0) 2023.02.03