자바스크립트를 사용하여 CSS Grid를 활용한 이미지 갤러리에 필터링 기능 추가하기

이미지 갤러리에 필터링 기능을 추가하여 사용자가 원하는 조건에 따라 이미지를 필터링할 수 있는 기능을 구현해보겠습니다. 이때, CSS Grid를 사용하여 이미지를 그리드 형태로 배치할 것이므로, 자바스크립트를 활용하여 필터링 기능을 추가하겠습니다.

HTML 구조 설정하기

먼저, HTML 구조를 설정해야 합니다. CSS Grid를 사용하여 이미지를 배치하기 위해 <div> 요소를 사용하겠습니다.

<div class="gallery">
  <div class="item">
    <img src="image1.jpg" alt="Image 1">
  </div>
  <div class="item">
    <img src="image2.jpg" alt="Image 2">
  </div>
  <div class="item">
    <img src="image3.jpg" alt="Image 3">
  </div>
  <!-- 추가적인 이미지 요소 추가 -->
</div>

CSS Grid 스타일 적용하기

다음으로, CSS Grid를 사용하여 이미지를 그리드 형태로 배치하도록 스타일을 적용해보겠습니다.

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  grid-gap: 10px;
}

.item {
  width: 100%;
}

필터링 기능 추가하기

이제 자바스크립트를 사용하여 필터링 기능을 추가해보겠습니다. 필터링 기능은 사용자가 선택된 필터링 옵션에 따라 이미지를 숨기거나 보여주도록 작성될 것입니다.

const filterButtons = document.querySelectorAll('.filter-button');
const items = document.querySelectorAll('.item');

filterButtons.forEach(button => {
  button.addEventListener('click', () => {
    const filterValue = button.dataset.filter;

    items.forEach(item => {
      if (item.classList.contains(filterValue) || filterValue === 'all') {
        item.style.display = 'block';
      } else {
        item.style.display = 'none';
      }
    });
  });
});

위의 코드에서는 필터링 버튼(.filter-button)과 이미지 요소(.item)를 선택하고, 각 필터링 버튼의 클릭 이벤트에 대한 리스너를 추가합니다. 리스너 함수 내에서는 선택된 필터링 값에 따라 이미지 요소를 보여주거나 숨깁니다.

예제 코드 실행하기

위의 코드를 HTML 파일에 추가 후, 웹 브라우저에서 실행해보세요. 필터링 버튼을 클릭하여 이미지를 필터링해볼 수 있습니다.

이미지 갤러리에 필터링 기능을 추가하여 사용자가 원하는 이미지를 빠르고 쉽게 찾을 수 있도록 도와줄 수 있습니다. CSS Grid와 자바스크립트를 이용하여 유연하고 반응형인 이미지 갤러리를 구현할 수 있으니, 이를 참고하여 웹 애플리케이션에 필요한 갤러리 기능을 개발해보세요.

#webdevelopment #javascript