카테고리 버튼 클릭시 해당 문서가 보이게 작업
//index.html
<section id="work" class="section">
//카테고리
<div class="work__categories">
<button class="category__btn selected" data-filter="*">
All
</button>
<button class="category__btn" data-filter="frontend">
Frontend
</button>
<button class="category__btn" data-filter="design">
Design
</button>
</div>
//아이템들
<div class="work__projects">
<a href="" class="project" data-type="frontend">
<img src="" alt="projects" class="project__img"/>
</a>
<!-- -->
...
<!-- -->
<a href="" class="project" data-type="frontend">
<img src="" alt="projects" class="project__img"/>
</a>
</div>
</section>
const categoryBtn = document.querySelector(".work__categories");
//카테고리 컨테이너를 가져옴
const projects = document.querySelectorAll(".project");
//아이템 전체를 가져옴
categoryBtn.addEventListener("click", (e) => {
const filter = e.target.dataset.filter;
//console.log(filter); //e.target값 확인
if (filter == null) {
return;
}
projects.forEach((project) => {
// for문과 같은 의미, 배열을 불러와서 정렬
if (filter === "*" || filter === project.dataset.type) {
project.classList.remove("invisible");
} else {
project.classList.add("invisible");
}
});
//모든 아이템이 보여진 상태
.project {
position: relative;
width: 280px;
height: 280px;
margin: 4px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid var(--color-lg);
background-color: var(--color-wh);
overflow: hidden;
transition: all 300ms ease;
}
//필터링후 추가 삭제
.project.invisible {
display: none;
}