Introduction

์ด๋ฒˆ์ฃผ๋Š” ๊ณ„์†ํ•ด์„œ ์ฑ„์šฉ ๊ณผ์ œ ์œ„์ฃผ๋กœ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์‹ค์Šต์„ ์ง„ํ–‰ ์ค‘์ด๋‹ค.
์˜ค๋Š˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์— ์˜ฌ๋ ค์ ธ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ณผ์ œ์ธ ๊ณ ์–‘์ด ์‚ฌ์ง„์ฒฉ์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ์–ด์–ธ ์ด๋ฒˆ๋…„๋„ 4์›”์ฏค ์ฒ˜์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๊ณ  html, css ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ € ๋ฌธ์ œ๋ฅผ ๋ดค์—ˆ๋Š”๋ฐ ๊ทธ๋•Œ ๋‹น์‹œ์—๋Š” ์•„์˜ˆ ๋„์ „๋„ ๋ชปํ–ˆ์—ˆ๋‹ค.
๋‚ด๊ฐ€ ์ €๊ฑธ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ž˜๊ฐ€ ์–ธ์ œ์ฏค ์˜ฌ๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ์ด์ œ๋Š” ๋ฐ”๋‹๋ผ JS๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•˜๋Š” ์ž์ฒด๊ฐ€ ์žฌ๋ฏธ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘๋ ค์›€๋„ ์–ด๋Š์ •๋„ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์—ˆ๋‹ค.
์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ๊พธ์ค€ํžˆ ํ’€๊ณ  ๊ณผ์ œ๋„ ๊ณ„์† ์ ‘ํ•ด๋ณด๋ฉฐ ์ต์ˆ™ํ•ด์ ธ์•ผ๊ฒ ๋‹ค~~๐Ÿ˜†


์˜ค๋Š˜ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๊ฒƒ

๊ณ ์–‘์ด ์‚ฌ์ง„์ฒฉ ๊ตฌํ˜„ํ•˜๊ธฐ
- Element.classList
- ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ

์˜ค๋Š˜์€ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๋ฐฉ๋ฒ•๋“ค๊ณผ ๋ฌธ๋ฒ•๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณด๊ณ ์žํ•œ๋‹ค.


Element.classList

  • ํด๋ž˜์Šค์˜ ์†์„ฑ๊ฐ’ ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • element.className์€ ํด๋ž˜์Šค ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ž˜์Šค ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€, ์ œ๊ฑฐ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ
<body class="main page">
  <script>
    for (let name of document.body.classList) {
      alert(name); // main๊ณผ page๊ฐ€ ์ถœ๋ ฅ๋จ
    }
  </script>
</body>

classList์˜ ๋ฉ”์„œ๋“œ

  • add : class๋ฅผ ์ถ”๊ฐ€
  • remove : class๋ฅผ ์ œ๊ฑฐ
  • toggle : class๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์ œ๊ฑฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ถ”๊ฐ€
  • contains : class์˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ true/false ๋ฐ˜ํ™˜

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ element.classList์˜ type์€ Object์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋ฅผ ์“ธ ๊ฒฝ์šฐ Array.from์„ ์ด์šฉํ•ด ๋ณ€ํ™˜ ํ›„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.


ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋†“์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • ํ‚ค๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋Š” keydown, ํ‚ค๋ฅผ ๋†“์„ ๋•Œ๋Š” keyup
  • element.key๋ฅผ ํ†ตํ•ด ํŠน์ • ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋†“์„ ๋•Œ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌํ˜„ ๊ฐ€๋Šฅ

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ ์˜ˆ์‹œ

์•„๋ž˜์™€ ๊ฐ™์ด ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ESC๋ฅผ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ๋ชจ๋‹ฌ ์ฐฝ์ด ๋‹ซํžˆ๊ฑฐ๋‚˜, Backspaceํ‚ค๋ฅผ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ๋’ค๋กœ๊ฐ€๊ธฐ ์ฒ˜๋ฆฌ ๋“ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

window.addEventListener('keyup', (e) => {
    // ๋ˆ„๋ฅธ ํ‚ค๊ฐ€ ESC์ธ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ
    if (e.key === 'Escape') {
      // ํ•จ์ˆ˜ ๊ตฌํ˜„ 
    }
  });
window.addEventListener('keyup', (e) => {
    // ๋ˆ„๋ฅธ ํ‚ค๊ฐ€ Backspace์ธ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ
    if (e.key === 'Backspace') {
      // ํ•จ์ˆ˜ ๊ตฌํ˜„ 
    }
  });

Comment

์ ์  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋งŽ์•„์ ธ์„œ ๊ธฐ๋ถ„์ด ์ข‹๋‹ค. ๊ทธ๋‚  ๋ฐฐ์šด ๊ฒƒ์„ ๊ทธ๋‚  ์ •๋ฆฌํ•˜๊ณ  ๋ณต์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก TIL์„ ๊พธ์ค€ํžˆ ์จ์•ผ๊ฒ ๋‹ค.
๊ฐ•์˜๋ฅผ ๋“ค์„ ๋•Œ๋Š” ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋˜ ๋ถ€๋ถ„๋„ ํ˜ผ์ž ๊ฒ€์ƒ‰์œผ๋กœ ์ฐพ์•„๋ณด๋ฉฐ ์ •๋ฆฌํ•  ๋•Œ ์ดํ•ด๊ฐ€ ๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ  ์‹œ๊ฐ„ ๋‚  ๋•Œ๋งˆ๋‹ค ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.
ํ•œ ๋‹ฌ์งธ 24์‹œ๊ฐ„์ด ๋ถ€์กฑํ•œ ๊ฒฝํ—˜ ์ค‘์ด๋‹คใ…Žใ…Ž ์–ธ์ œ์ฏค ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์›Œ ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋‚ ์ด ์˜ฌ๊นŒ...
๊ทธ ๋‚ ์„ ๊ธฐ๋‹ค๋ ค๋ณธ๋‹ค ๐Ÿค”


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

profile
์ธ์ƒ์€ ์šฉ๊ธฐ์˜ ์–‘์— ๋”ฐ๋ผ ์ค„์–ด๋“ค๊ฑฐ๋‚˜, ๋Š˜์–ด๋‚œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€