[javascript] PhotoSwipe를 이용한 이미지 검색 기능 구현 방법
이번 포스트에서는 JavaScript 라이브러리인 PhotoSwipe를 활용하여 이미지 검색 기능을 구현하는 방법에 대해 알아보겠습니다.
PhotoSwipe란?
PhotoSwipe는 모바일 및 데스크톱에서 사용할 수 있는 JavaScript 이미지 갤러리 라이브러리입니다. 이 라이브러리를 사용하면 사용자가 이미지를 확대, 축소, 드래그 등 다양한 작업을 수행할 수 있으며, 이미지에 대한 좌표 정보도 제공합니다.
구현 방법
- PhotoSwipe 라이브러리를 다운로드하고 웹 페이지에 추가합니다. 코드는 다음과 같습니다.
<!-- CSS -->
<link rel="stylesheet" href="path/to/photoswipe.css">
<link rel="stylesheet" href="path/to/default-skin/default-skin.css">
<!-- JavaScript -->
<script src="path/to/photoswipe.js"></script>
<script src="path/to/photoswipe-ui-default.js"></script>
- 이미지를 태그로 감싸고 필요한 정보를 데이터 속성으로 저장합니다. 예를 들어, 이미지 URL, 너비, 높이 등을 저장할 수 있습니다. 코드는 다음과 같습니다.
<a href="image.jpg" data-size="800x600">
<img src="thumbnail.jpg">
</a>
- 검색 기능을 추가하기 위해 input 요소를 추가합니다. 코드는 다음과 같습니다.
<input type="text" id="search-input">
- JavaScript 코드를 작성하여 검색 기능을 구현합니다. 코드의 주요 로직은 다음과 같습니다.
// 검색 기능 구현
document.getElementById("search-input").addEventListener("input", function() {
var searchText = this.value.toLowerCase();
var images = document.getElementsByTagName("a");
for (var i = 0; i < images.length; i++) {
var image = images[i];
var imageName = image.getAttribute("data-title").toLowerCase();
if (imageName.indexOf(searchText) > -1) {
image.style.display = "inline-block";
} else {
image.style.display = "none";
}
}
});
// PhotoSwipe 초기화
var gallery = new PhotoSwipe(document.querySelector(".pswp"), PhotoSwipeUI_Default, images, options);
gallery.init();
- 웹 페이지에 데이터 속성을 포함한 이미지 태그를 작성합니다. 코드는 다음과 같습니다.
<a href="image1.jpg" data-size="800x600" data-title="Nature">
<img src="thumbnail1.jpg">
</a>
<a href="image2.jpg" data-size="800x600" data-title="City">
<img src="thumbnail2.jpg">
</a>
<a href="image3.jpg" data-size="800x600" data-title="Beach">
<img src="thumbnail3.jpg">
</a>
이제 위의 방법으로 PhotoSwipe를 이용한 이미지 검색 기능을 구현할 수 있습니다.
결론
이번 포스트에서는 PhotoSwipe를 이용하여 이미지 검색 기능을 구현하는 방법에 대해 알아보았습니다. PhotoSwipe를 사용하면 사용자가 손쉽게 이미지를 확대, 축소할 수 있으며, 검색 기능을 추가하여 원하는 이미지를 더 쉽게 찾을 수 있습니다. PhotoSwipe의 다양한 기능과 설정 옵션을 활용하여 자신만의 이미지 갤러리를 구축해보세요.