[javascript] PhotoSwipe를 이용한 이미지 위치 이동 기능 구현 방법

PhotoSwipe는 모바일 및 데스크톱에서 사용할 수 있는 이미지 갤러리 및 라이트박스 라이브러리입니다. 이 라이브러리를 이용하면 이미지를 확대, 축소, 이동할 수 있는 기능을 추가할 수 있습니다. 이번 블로그 포스트에서는 PhotoSwipe를 사용하여 이미지 위치 이동 기능을 구현하는 방법을 알아보겠습니다.

1. PhotoSwipe 설치 및 설정

PhotoSwipe를 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다. 다음과 같이 npm을 사용하여 설치할 수 있습니다.

npm install photoswipe

설치가 완료되면, PhotoSwipe의 스타일과 스크립트 파일을 HTML 파일에 추가해야 합니다. 다음과 같이 태그를 추가합니다.

<link rel="stylesheet" href="path/to/photoswipe.css">
<link rel="stylesheet" href="path/to/default-skin.css">
<script src="path/to/photoswipe.min.js"></script>
<script src="path/to/photoswipe-ui-default.min.js"></script>

2. HTML 마크업 준비하기

PhotoSwipe를 사용하여 이미지 위치 이동 기능을 구현하기 위해서는 이미지들을 마크업으로 작성해야 합니다. 다음과 같은 형태로 작성합니다.

<div class="my-gallery">
  <figure>
    <a href="path/to/image-1.jpg" data-size="800x600">
      <img src="path/to/thumb-1.jpg" alt="Image 1">
    </a>
    <figcaption>Image 1</figcaption>
  </figure>
  
  <figure>
    <a href="path/to/image-2.jpg" data-size="800x600">
      <img src="path/to/thumb-2.jpg" alt="Image 2">
    </a>
    <figcaption>Image 2</figcaption>
  </figure>
  
  <!-- 추가 이미지들 -->
</div>

위와 같이 이미지들을 figure 요소 안에 a 요소로 감싸고, href 속성에 이미지 파일 경로를 지정합니다. data-size 속성을 설정하여 이미지의 크기를 지정할 수도 있습니다.

3. JavaScript로 PhotoSwipe 초기화

마크업 작성이 완료되면, JavaScript를 사용하여 PhotoSwipe를 초기화해야 합니다. 다음과 같이 초기화 코드를 작성합니다.

var gallery = new PhotoSwipe('.my-gallery', PhotoSwipeUI_Default);
gallery.init();

위 코드에서 ‘.my-gallery’는 앞에서 작성한 HTML 마크업의 클래스를 나타냅니다. 라이브러리를 초기화한 후, init() 함수를 호출하여 PhotoSwipe를 실행할 준비를 합니다.

4. 이미지 위치 이동 기능 추가하기

이제 이미지 위치 이동 기능을 추가할 수 있습니다. PhotoSwipe는 기본적으로 이미지를 이동할 수 있도록 설정되어 있지만, 필요에 따라 이동 속도 등을 조정할 수 있습니다. 다음과 같은 코드를 사용하여 이동 속도를 조절할 수 있습니다.

gallery.options.pinchToClose = false; // 이미지 이동 비활성화
gallery.options.tapToToggleControls = false; // 탭 시 이미지 내 부가 기능 표시 비활성화

// 이미지 이동 속도 조절
gallery.options.getDoubleTapZoom = function(isMouseClick, item) {
  if (isMouseClick) {
    return 1;
  } else {
    return item.initialZoomLevel < 0.7 ? 1 : 1.5;
  }
}

위 코드에서는 pinchToClose 옵션을 false로 설정하여 이미지 이동 기능을 비활성화하고, tapToToggleControls 옵션을 false로 설정하여 탭 시 이미지 내의 부가 기능을 표시하지 않도록 합니다. 또한, getDoubleTapZoom 함수를 사용하여 이미지 이동 속도를 조절할 수 있습니다.

결론

이제 PhotoSwipe를 사용하여 이미지 위치 이동 기능을 구현하는 방법을 알아보았습니다. 앞서 설명한 방법을 따라 마크업을 작성하고, JavaScript를 사용하여 PhotoSwipe를 초기화하고 원하는 이미지 이동 기능을 설정할 수 있습니다. PhotoSwipe의 다양한 옵션과 기능을 활용하여 사용자에게 편리한 이미지 갤러리를 제공해보세요!

참고: PhotoSwipe 공식 문서