~์ ๊น ์ฌ๋ด~
์์ง ๊ณต๋ถํ ์ง ์ผ๋ง ์ ๋์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋๋ฌด ์ด๋ ต๋ค.ใ ใ
ํ์ด์ฌ, ์๋ฐ๋ฅผ ์ฒ์ ๋ฐฐ์ธ๋ ๋ณด๋ค ํจ์ฌ ์ด๋ ค์....ใ ใ ใ ใ
๊ฒ๋ค๊ฐ ์ง๊ธ ์ฑ๋ฆฐ์ง ์ค์ธ๋ฐ, ์ํ์๋ ๋ถ๋ค ๋๋ฌด ๋ง์์ ์๊ดด๊ฐ ๋ ๋ค. ์ง์ง ๋ฆฌ์คํ......๐ญ
if๋ฌธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ
html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Review</title>
<link rel="stylesheet" href="index.css" />
</head>
<body>
<h1 id = "title">JS is so hard!!</h1>
<script src="index.js"></script>
</body>
</html>
css
body {
background-color: #fab1a0;
}
h1 {
color: #2980b9;
transition: color 0.5s ease-in-out;
}
.clicked {
color: #6c5ce7;
}
JS
const title = document.querySelector("#title");
const CLICKED_CLASS = "clicked";
function handleClick(){
const currentClass = title.className;
console.log(currentClass);
if(currentClass !== CLICKED_CLASS){
title.className = CLICKED_CLASS;
}
else{
title.className = "";
}
}
function init(){
title.addEventListener("click", handleClick);
}
init();
css์๋ ๊พธ๋ฏธ๋ ๊ธฐ๋ฅ๋ง, js์์ ๋์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ๋ง ๋ฃ์ ์ํ์ด๋ค.
ํด๋ฆญ ์, h1์ class๊ฐ ์๋ฌด๊ฒ๋ ์๋ ์ํ์์ class="click"์ผ๋ก ๋ฐ๋๋ค.
๋ฌธ์ ์
ํ์ง๋ง, ์ด๊ฒ์ ํ์ฌ h1์ class๊ฐ ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ ์ ์๋ํ๋ ๊ฒ์ด๋ค.
html์ h1์ class="btn"์ ์ถ๊ฐํ๊ณ ,
css์์ .btn{cursor: pointer}๋ฅผ ์ถ๊ฐํ์. (์ปค์๊ฐ ์๊ฐ๋ฝ ๋ชจ์์ผ๋ก ๋ํ๋๊ฒ ํ๋ ๊ฒ.)
2๋ฒ ํด๋ฆญํ๋ฉด class๊ฐ
"btn" -> "click" -> ""
์ ์ํ๋ก ๋ฐ๋๋ค.
์ฆ, ๊ธฐ์กด์ ํด๋์ค๊ฐ ์ฌ๋ผ์ง๊ฒ ๋๋ ๋ฌธ์ ๋ฐ์!๐ฆ
์ด์ฒ๋ผ replace ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด classList๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
classList - Methods
- add(String)
- ์ง์ ํ ํด๋์ค ๊ฐ์ ์ถ๊ฐํ๋ค.
- ๋ง์ฝ ์ถ๊ฐํ๋ ค๋ ํด๋์ค๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ๋ฌด์.
- remove(String)
- ์ง์ ํ ํด๋์ค ๊ฐ์ ์ ๊ฑฐํ๋ค.
- ์กด์ฌํ์ง ์๋ ํด๋์ค๋ผ๋ฉด? ์๋ฌ ๋ฐ์ X
- contains(String)
- ์ง์ ํ ํด๋์ค ๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธ.
- true, false ๊ฐ์ ๋ฐํ.
- replace(old, new)
- old class๋ฅผ new class๋ก ๋์ฒด
- item(Number)
- ์ธ๋ฑ์ค ๊ฐ์ ํ์ฉํ์ฌ ํด๋์ค ๊ฐ์ ๋ฐํ
const title = document.querySelector("#title");
const CLICKED_CLASS = "clicked";
function handleClick(){
const hasClass = title.classList.contains(CLICKED_CLASS);
if(!hasClass){
title.classList.add(CLICKED_CLASS);
}
else{
title.classList.remove(CLICKED_CLASS);
}
}
function init(){
title.addEventListener("click", handleClick);
}
init();
classList๋ฅผ ์ฌ์ฉํด์ ์ฝ๋ ์ฌ์์ฑ.
์ ์์ ์ผ๋ก ์๋๋๋ค! ๐
ํ์ง๋ง, ์ด๊ฒ๋ ๋์ฑ ํธ๋ฆฌํ๊ฒ ๋ง๋ค ์ ์๋ค.
๋ฐ๋ก๋ฐ๋ก toggle ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ ๊ฒ!!!!!!
classList - toggle
toggle์ ํด๋์ค์ ์ ๋ฌด๋ฅผ ์ฒดํฌํด์ ์์ผ๋ฉด add, ์์ผ๋ฉด remove๋ฅผ ์๋์ผ๋ก ์์ผ์ค๋ค.
์๋์ ์ฝ๋๋ ๋ฐ๋ก ์์ ์ฝ๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ค.
const title = document.querySelector("#title");
const CLICKED_CLASS = "clicked";
function handleClick(){
title.classList.toggle(CLICKED_CLASS);
}
function init(){
title.addEventListener("click", handleClick);
}
init();
๋๋ ํธ๋ฆฌํ ๊ฒ!!๐
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ ธ๋ง๋์ฝ๋ ๋ฐ๋๋ผJS ์ฑ๋ฆฐ์ง 8๊ธฐ ์กธ์ ํ๊ธฐ (0) | 2021.03.25 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ ํจ์, ๋ฐฑํฑ, DOM, querySelector (0) | 2021.01.15 |
์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์, ๋ฐฐ์ด(Array), ๊ฐ์ฒด(Object) (0) | 2021.01.14 |
์๋ฐ์คํฌ๋ฆฝํธ, ES, ๋ฐ๋๋ผJS, SPA (0) | 2021.01.13 |
CSS ๋งํฌ ๋ฐ์ค ์์ ๊ธฐ, ๋งํฌ ์์ ์์ ๊ธฐ (2) | 2020.08.29 |