๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/JavaScript jQuery

[JavaScript / jQuery] classList ํ™œ์šฉํ•˜์—ฌ ์„œ๋ธŒ๋ฉ”๋‰ด ๋งŒ๋“ค๊ธฐ

by Connecting-the-dots 2022. 3. 4.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

  • Navbar ์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๊ฐ€ slideUp, slideDown ์˜ ํ˜•ํƒœ๋กœ ์—ด๊ณ  ๋‹ซํžˆ๊ฒŒ ํ–ˆ๋‹ค.

๐Ÿ’œ HTML

<nav class="navbar navbar-light bg-light">
    <div class="container-fluid">
        <span class="navbar-brand">Navbar</span>
        <button class="navbar-toggler" type="button">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
</nav> 
<ul class="list-group">
    <li class="list-group-item">An item</li>
    <li class="list-group-item">A second item</li>
    <li class="list-group-item">A third item</li>
    <li class="list-group-item">A fourth item</li>
    <li class="list-group-item">And a fifth one</li>
</ul>
  • ๋น ๋ฅธ Navbar ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ์„ ์œ„ํ•ด Bootstrap ์„ ํ™œ์šฉํ–ˆ๋‹ค.
  • Navbar ์•„๋ž˜์— Navbar ์˜ ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋  ๋ ˆ์ด์•„์›ƒ๋„ Bootstrap ์—์„œ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์ฃผ์—ˆ๋‹ค.

๐Ÿ’œ CSS

.list-group {
  display: none;
}

.show {
  display: block;
}
  • ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ์ด ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด, ์šฐ์„  ์ฒซํ™”๋ฉด์—์„œ๋Š” ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณด์—ฌ์ ธ์„œ๋Š” ์•ˆ๋˜๋ฏ€๋กœ display: none ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  list-group ํด๋ž˜์Šค์— show ๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ถ™์œผ๋ฉด ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณด์—ฌ์ง€๊ฒŒ๋” show ํด๋ž˜์Šค์—๋Š” display: block ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.

๐Ÿ’œ JavaScript

// JavaScript ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ Navbar ๋ฆฌ์ŠคํŠธ ๋ชฉ๋ก ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ
document.querySelectorAll('.navbar-toggler')[0].addEventListener('click', function(){
    document.querySelectorAll('.list-group')[0].classList.toggle('show');
})

// jQuery ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ Navbar ๋ฆฌ์ŠคํŠธ ๋ชฉ๋ก ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ (+ slide ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ)
$('.navbar-toggler').eq(0).on('click', function(){
    $('.list-group').eq(0).slideToggle('show');
})
  • ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ์ด์ œ ์šฐ์ธก์˜ ํ–„๋ฒ„๊ฑฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณด์˜€๋‹ค๊ฐ€ ์•ˆ ๋ณด์˜€๋‹ค๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ธฐ๋Šฅ์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ์ฒ˜์Œ์—๋Š” javaScript ๋ฌธ๋ฒ•์œผ๋กœ ๋‘๋ฒˆ์งธ์—๋Š” jQuery ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ slide ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค. 
  • eq(์ˆซ์ž) ๋ถ€๋ถ„์€ ๊ธฐ์กด์˜ JavaScript ์—์„œ์˜ ์ธ๋ฑ์Šค์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. id ๋Š” ์œ ์ผํ•˜๋ฏ€๋กœ ๋งŒ์•ฝ id ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๊ตณ์ด ์‚ฌ์šฉํ•  ํ•„์š”์—†์ง€๋งŒ, class ๋ผ๋ฉด ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์€ ํ•„์ˆ˜์ด๋‹ค.
  • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ํ† ๊ธ€์ฒ˜๋Ÿผ ๋ฉ”๋‰ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ณด์˜€๋‹ค๊ฐ€ ์•ˆ๋ณด์˜€๋‹ค๊ฐ€ ํ•ด์•ผํ•˜๋ฏ€๋กœ slideUp, slideDown ์ด ์•„๋‹Œ slideToggle ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•