[miniProjects] 38_Mobile Tab Navigation

๋ณด๋ฆฌยท2023๋…„ 6์›” 30์ผ
0

miniProjects

๋ชฉ๋ก ๋ณด๊ธฐ
38/47

38_Mobile Tab Navigation

๐Ÿ’ป์ฃผ์ œ : ๋ชจ๋ฐ”์ผ ํƒญ๋ฐ”๋ฅผ ํด๋ฆญ์‹œ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ”๋€œ

โœจJS

const contents = document.querySelectorAll('.content')
const listItems = document.querySelectorAll('nav ul li')

listItems.forEach((item, idx) => {
    item.addEventListener('click', () => {
        hideAllContents()
        hideAllItems()

        item.classList.add('active')
        contents[idx].classList.add('show')
    })
})

function hideAllContents() {
    contents.forEach(content => content.classList.remove('show'))
}

function hideAllItems() {
    listItems.forEach(item => item.classList.remove('active'))
}
  • listItems.forEach((item, idx) => { ... })
    listItems์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
    item์€ ๊ฐ๊ฐ์˜ <li> ์š”์†Œ๋ฅผ ์˜๋ฏธํ•˜๊ณ , idx๋Š” ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋‹ค.

  • item.addEventListener('click', () => { ... })

๐Ÿ˜ถhideAllContents()

๋ชจ๋“  contents ์š”์†Œ๋ฅผ ์ˆจ๊ธฐ๋Š” ํ•จ์ˆ˜์ธ hideAllContents()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

hideAllContents() ํ•จ์ˆ˜๋Š” contents ๋ฐฐ์—ด์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ "show" ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

๐Ÿ˜ถhideAllItems()

๋ชจ๋“  listItems ์š”์†Œ๋ฅผ ์ˆจ๊ธฐ๋Š” ํ•จ์ˆ˜์ธ hideAllItems()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

hideAllItems() ํ•จ์ˆ˜๋Š” listItems ๋ฐฐ์—ด์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ "active" ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • item.classList.add('active')
    ํ˜„์žฌ ํด๋ฆญ๋œ <li> ์š”์†Œ์— "active" ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • contents[idx].classList.add('show')
    contents ๋ฐฐ์—ด์—์„œ idx์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ์š”์†Œ์— "show" ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

profile
์ •์‹ ์ฐจ๋ ค ์ด ๊ฐ๋ฐ•ํ•œ ์„ธ์ƒ์†์—์„œ

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