자바스크립트로 플립북 애니메이션 구현하기

플립북 애니메이션은 웹사이트나 앱에서 사용자에게 독특하고 시각적으로 매력적인 경험을 제공하는 좋은 방법입니다. 자바스크립트를 사용하여 플립북 애니메이션을 구현하는 방법을 알아보겠습니다.

HTML 구조 설정하기

플립북은 일련의 페이지로 구성되어 있으며, 사용자가 페이지를 넘길 때마다 애니메이션이 발생합니다. 먼저 HTML 구조를 설정해야 합니다. 다음은 간단한 플립북 HTML 구조의 예입니다.

<div class="flip-book">
  <div class="page">페이지 1</div>
  <div class="page">페이지 2</div>
  <div class="page">페이지 3</div>
  <!-- 추가적인 페이지들 -->
</div>

CSS 스타일링 추가하기

플립북에 적용할 CSS 스타일을 추가해야 합니다. 플립북 컨테이너인 .flip-book와 각 페이지의 스타일을 정의해야 합니다. 다음은 간단한 예입니다.

.flip-book {
  width: 500px;
  height: 300px;
  border: 1px solid #ccc;
  perspective: 1000px;
}

.page {
  position: absolute;
  width: 100%;
  height: 100%;
  background-color: white;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
  transform-style: preserve-3d;
  backface-visibility: hidden;
}

자바스크립트로 애니메이션 구현하기

이제 자바스크립트를 사용하여 플립북 애니메이션을 구현해보겠습니다. 애니메이션은 사용자의 입력에 따라 페이지를 돌리는 동작을 수행합니다.

var flipBook = document.querySelector('.flip-book');
var pages = Array.from(document.querySelectorAll('.page'));
var currentPageIndex = 0;

function nextPage() {
  if (currentPageIndex < pages.length - 1) {
    currentPageIndex++;
    flipBook.style.transform = `rotateY(${-180 * currentPageIndex}deg)`;
  }
}

function previousPage() {
  if (currentPageIndex > 0) {
    currentPageIndex--;
    flipBook.style.transform = `rotateY(${-180 * currentPageIndex}deg)`;
  }
}

document.addEventListener('keydown', function(event) {
  if (event.key === 'ArrowRight') {
    nextPage();
  } else if (event.key === 'ArrowLeft') {
    previousPage();
  }
});

document.addEventListener('swipeleft', nextPage);
document.addEventListener('swiperight', previousPage);

위의 자바스크립트 코드는 nextPage()previousPage() 함수를 통해 페이지를 변경하고, 키보드 이벤트와 스와이프 이벤트를 감지하여 애니메이션을 발생시킵니다.

결론

이제 자바스크립트로 플립북 애니메이션을 구현하는 방법을 알아보았습니다. HTML과 CSS로 구성된 플립북 구조에 자바스크립트 코드를 추가하여 플립북의 페이지를 돌리고 애니메이션을 구현할 수 있습니다. 사용자의 입력에 따라 페이지를 변경하거나, 터치 이벤트를 추가하여 모바일에서도 플립북을 사용할 수 있도록 개선할 수 있습니다.

참고 자료:

#javascript #animation