ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

https://choi95.tistory.com/70

 

๋™์  Tabs

Tabs ๋™์  ์ƒ์„ฑ ์œ„์™€ ๊ฐ™์ด Tabs-Content๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ Tab์˜ ๋„ˆ๋น„๋Š” 200px๋กœ ์ผ์ •ํ•˜๊ณ  ๋ฐ•์Šค ๋‚ด์— ๋“ค์–ด๊ฐ€๋Š” Tab์€ ๊ฐ€๋ณ€์ ์ด๋‹ค.์ฆ‰, CSS ์ƒ์—์„œ Width์˜ ๊ฐ’์„ ์ •์ ์œผ๋กœ ์ฃผ๊ฒŒ ๋˜๋ฉด ์ •์ ์ธ Tabs๋ฅผ ๋งŒ๋“ค์ง€ ๋ชปํ•œ๋‹ค.

choi95.tistory.com

JS ์ƒ์—์„œ HTML ํƒœ๊ทธ ๋™์  ์ƒ์„ฑ

์ด์ „  ํฌ์ŠคํŒ…์—์„œ Tabs-Content๋Š” HTML ์ƒ์—์„œ์˜ ์ •์ ์ธ ํƒœ๊ทธ๊ฐ€ ์•„๋‹Œ, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ Tab-Data๋“ค์˜ ๊ฐฏ์ˆ˜์™€ ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”๊ตฌ๋˜๋Š” ํƒœ๊ทธ๋“ค์„ setAttribute()์™€ createElement()๋ฅผ  ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. 

function createNavElement(tag, tabNum, tabTitle) {
  if(tag === 'div') {
    for(let i = 0; i < tabNum; i++) {
      let tab = document.createElement('div');
      tab.setAttribute('class', "tab");
      tab.setAttribute('data-index', `${i}`);
      tab.textContent = `${tabTitle[i].title}`;
      divNavElem.push(tab);
    }
  } else {
    glider = document.createElement('span');
    glider.setAttribute('class', 'glider');
  }
}

ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ ์ฃผ์–ด ํƒœ๊ทธ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์„ ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋Š”๋ฐ,

ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค๋•Œ ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ๋น„ํšจ์œจ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

์ด๋ฅผ ๋Œ€์‹ ์— innerHTML๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

Element ์†์„ฑ(property) innerHTML์€ ์š”์†Œ(element) ๋‚ด์— ํฌํ•จ ๋œ HTML ๋˜๋Š” XML ๋งˆํฌ์—…์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
const nav = tabsData.map(
      ({ title }, i) => `
        ${i === 0 ? "<nav>" : ""}
        <div class="tab" data-index="${i}">${title}</div>
        ${i === tabsData.length - 1 ? '<span class="glider"></span></nav>' : ""}`
    );
    //tabsData๋Š” Tab-Data์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด์ด๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด map ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ innerHtml์— ๋“ค์–ด๊ฐˆ ๋งˆํฌ์—…์„ ๋ฆฌํ„ฐ๋Ÿด์˜ ํ‘œํ˜„์‹ ์‚ฝ์ž…์„ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด์ค€ ๋’ค, nav ๋ผ๋Š” ๋ณ€์ˆ˜์— ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์—ด๋กœ ํ• ๋‹นํ•ด ์ค€๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค๋ฅธ ํƒœ๊ทธ๋“ค ๋˜ํ•œ ์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋งˆํฌ์—…์„ ์ƒ์„ฑํ•ด ์ค€๋‹ค.

$tabs.innerHTML = [...nav, ...contents].join("");

์ƒ์„ฑํ•œ ๋งˆํฌ์—…์ด ๋‹ด๊ธด ๋ฐฐ์—ด๋“ค์„ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ๋ฐฐ์—ด ๋‚ด์— ๋ฌถ์–ด์ค€ ๋’ค, join ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด๋กœ ์น˜ํ™˜ํ•ด์„œ ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์ธ

tabs์˜ innerHTML์— ํ• ๋‹นํ•ด ์ฃผ์—ˆ๋‹ค.

join() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

JS์—์„œ ์ƒ์„ฑํ•ด์•ผ ๋  ๋งˆํฌ์—…๋“ค์ด ๋งŽ์„ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด innerHTML์„ ํ†ตํ•ด ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ