자바스크립트를 사용하여 CSS Grid를 활용한 이미지 갤러리의 필터링 기능 추가하기
이미지 갤러리는 웹사이트에서 많이 사용되는 기능 중 하나입니다. 이번에는 자바스크립트를 사용하여 CSS Grid를 활용한 이미지 갤러리에 필터링 기능을 추가해보겠습니다.
필터링 기능 구현하기
HTML 구조 설정하기
먼저, 이미지들을 담을 div
요소를 생성하고, 이미지들을 figure
요소로 감싸주는 구조를 만듭니다. 각 이미지에는 data-category
속성을 추가하여 이미지가 속하는 카테고리를 지정합니다.
<div class="gallery">
<figure data-category="nature">
<img src="image1.jpg" alt="Nature Image">
</figure>
<figure data-category="city">
<img src="image2.jpg" alt="City Image">
</figure>
<figure data-category="nature">
<img src="image3.jpg" alt="Nature Image">
</figure>
<!-- 추가 이미지들 -->
</div>
필터링 버튼 추가하기
다음으로, 필터링 기능을 제어할 버튼들을 추가합니다. 각 버튼에는 필터링할 카테고리를 나타내는 data-filter
속성을 추가합니다.
<button class="filter-button" data-filter="all">All</button>
<button class="filter-button" data-filter="nature">Nature</button>
<button class="filter-button" data-filter="city">City</button>
<!-- 추가 버튼들 -->
자바스크립트로 필터링 기능 구현하기
이제 자바스크립트를 사용하여 필터링 기능을 구현해보겠습니다. 필터링 버튼을 클릭했을 때, 해당 카테고리에 속하는 이미지만 보여지도록 스타일을 변경하는 기능을 추가합니다.
const buttons = document.querySelectorAll('.filter-button');
const gallery = document.querySelector('.gallery');
buttons.forEach(button => {
button.addEventListener('click', () => {
const filter = button.dataset.filter;
gallery.childNodes.forEach(child => {
const category = child.dataset.category;
if (filter === 'all' || filter === category) {
child.style.display = 'block';
} else {
child.style.display = 'none';
}
});
});
});
완성된 필터링 기능 확인하기
위의 코드를 HTML 파일에 추가하고, 웹 브라우저에서 확인해보면 이미지 갤러리에 필터링 기능이 추가된 것을 확인할 수 있습니다. 필터링 버튼을 클릭하여 원하는 카테고리의 이미지들만 보여지도록 할 수 있습니다.
커스텀 CSS 스타일링이나 다양한 기능을 추가하여 좀 더 풍부한 이미지 갤러리를 구현할 수도 있습니다.
#webdevelopment #javascript