[javascript] 자바스크립트와 GreenSock을 이용한 드래그 앤 드롭 기능을 사용한 스톱 모션 애니메이션 구현 방법

개요

스톱 모션 애니메이션은 움직임을 일시적으로 멈추고 조각조각으로 보여주는 효과를 제공합니다. 이번 블로그에서는 자바스크립트와 GreenSock 라이브러리를 사용하여 드래그 앤 드롭 기능을 통해 스톱 모션 애니메이션을 구현하는 방법을 알아보겠습니다.

GreenSock 소개

GreenSock(GSAP)은 HTML5와 자바스크립트 기반의 애니메이션 라이브러리로, 쉽고 강력한 애니메이션 효과를 제공합니다. GSAP을 사용하면 웹 애니메이션을 부드럽고 성능 좋게 구현할 수 있습니다.

드래그 앤 드롭 기능 구현

드래그 앤 드롭 기능을 구현하기 위해 다음과 같은 단계를 따라갈 수 있습니다.

1. HTML 마크업 작성

드래그 앤 드롭할 요소들을 HTML로 작성합니다. 예를 들어, 드래그 앤 드롭할 이미지들을 <div> 태그로 감싼 후 drag-item 클래스를 추가합니다.

<div class="drag-item">
  <img src="image1.jpg" alt="Image 1">
</div>
<div class="drag-item">
  <img src="image2.jpg" alt="Image 2">
</div>
<!-- 추가적인 이미지들 -->

2. 자바스크립트 설정

드래그 앤 드롭 기능을 구현하기 위해 자바스크립트를 설정합니다.

// 드래그 앤 드롭할 요소들을 선택합니다.
const dragItems = document.querySelectorAll('.drag-item');

// 요소들에 드래그 앤 드롭 이벤트 리스너를 추가합니다.
dragItems.forEach(item => {
  item.addEventListener('dragstart', dragStart);
  item.addEventListener('dragend', dragEnd);
});

// 드래그 시작 시 실행되는 함수
function dragStart() {
  // 드래그 앤 드롭할 요소의 투명도를 조정합니다.
  this.classList.add('dragging');
}

// 드래그 종료 시 실행되는 함수
function dragEnd() {
  // 드래그 앤 드롭할 요소의 투명도를 원래대로 돌려놓습니다.
  this.classList.remove('dragging');
}

3. 스톱 모션 애니메이션 설정

GreenSock을 사용하여 스톱 모션 애니메이션을 설정합니다.

// 드래그 앤 드롭된 요소들을 선택합니다.
const dropZone = document.getElementById('drop-zone');

// 드롭 영역에 드래그 앤 드롭 이벤트 리스너를 추가합니다.
dropZone.addEventListener('dragover', dragOver);
dropZone.addEventListener('dragenter', dragEnter);
dropZone.addEventListener('dragleave', dragLeave);
dropZone.addEventListener('drop', drop);

// 드롭 영역에 마우스가 올라갔을 때 실행되는 함수
function dragOver(e) {
  // 이벤트의 기본 동작을 취소합니다.
  e.preventDefault();
}

// 드롭 영역에 들어왔을 때 실행되는 함수
function dragEnter() {
  // 드롭 영역의 스타일을 변경합니다.
  this.classList.add('drag-enter');
}

// 드롭 영역에서 나갔을 때 실행되는 함수
function dragLeave() {
  // 드롭 영역의 스타일을 원래대로 돌려놓습니다.
  this.classList.remove('drag-enter');
}

// 드롭이 완료되었을 때 실행되는 함수
function drop() {
  // 드롭된 요소의 스타일을 변경합니다.
  this.classList.add('dropped');

  // 스톱 모션 애니메이션을 설정합니다.
  TweenMax.to('.drag-item', 1, { opacity: 0, scale: 0.5, ease: Power2.easeOut });
}

위의 코드에서 Power2.easeOut는 애니메이션 효과를 설정하는 부분입니다. 여러 가지 애니메이션 효과를 설정할 수 있으며, 필요에 따라 변경할 수 있습니다.

결론

이번 블로그에서는 자바스크립트와 GreenSock 라이브러리를 사용하여 드래그 앤 드롭 기능을 통해 스톱 모션 애니메이션을 구현하는 방법을 알아보았습니다. 이를 참고하여 다양한 웹 애니메이션을 구현해보세요.


참고 자료