728x90
반응형
자바스크립트의 forEach를 활용하여 탭 메뉴 구성하기
[html]
<ul class="tab-menu">
<li class="tab active"><a href="#">tab1</a>
<div class="content active">tab1 content</div>
</li>
<li class="tab"><a href="#">tab2</a>
<div class="content">tab2 content</div>
</li>
<li class="tab"><a href="#">tab3</a>
<div class="content">tab3 content</div>
</li>
</ul>
[css]
ul { position: relative; padding: 0; }
li { list-style: none; }
a{ color: inherit; text-decoration: none; }
.tab-menu {
display: flex; justify-content: space-between;
width: 200px;
}
.tab.active {
color: red;
text-decoration: underline;
}
.content {
display: none;
position: absolute; left: 0; top: 30px;
width: 100%; height: 50px;
background: skyblue; color: #fff;
}
.content.active {
display: block;
}
[js]
let tab = document.querySelectorAll('.tab');
let content = document.querySelectorAll('.content');
tab.forEach((item,idx) =>{
// 변수 tab의 "모든" 값과 인덱스를 변수 item과 idx에 불러오기
// console.log(item);
// console.log(idx);
item.addEventListener('click',function(e){
// 불러온 값 클릭 시 실행 함수
// 중요 - 변수 item과 idx에 "클릭된" 값과 인덱스로 재할당
// console.log(tab);
// console.log(idx);
e.preventDefault();
tab.forEach((i) =>{
// 변수 tab의 모든 값을 변수 i에 불러오기
i.classList.remove('active')
// 모든 값에 클래스 제거
});
content.forEach((j) =>{
// 변수 content의 모든 값을 변수 j에 불러오기
j.classList.remove('active')
// 모든 값에 클래스 제거
});
tab[idx].classList.add('active');
// 변수 tab의 "클릭된" 인덱스 idx에 클래스 추가
content[idx].classList.add('active');
// 변수 content의 "클릭된" 인덱스 idx에 클래스 추가
}); // function
}); // forEach
See the Pen [javascript] forEach tab menu _ forEach 활용 탭 메뉴 by Jinsik Son (@Jinsik-Son) on CodePen.
'JavaScript' 카테고리의 다른 글
[JavaScript] col 태그의 class를 tbody의 td에 동일하게 할당 (0) | 2024.03.04 |
---|---|
[JavaScript] table에서 내용을 title 속성에 자동으로 추가 (0) | 2024.01.24 |
[JavaScript] siblings() 함수 활용 탭 메뉴 (Tabs) 구성 (0) | 2023.10.31 |