자바스크립트로 스크롤 애니메이션 만들기

자바스크립트를 사용하여 웹페이지에 스크롤 애니메이션을 추가하는 방법을 알아보겠습니다.

1. Scroll Event 감지

스크롤 애니메이션을 만들기 위해 먼저 스크롤 이벤트를 감지해야 합니다. 이를 위해 window 객체의 scroll 이벤트를 사용합니다.

window.addEventListener('scroll', function() {
  // 스크롤 이벤트가 발생했을 때 실행되는 코드
  // 원하는 애니메이션 기능을 구현하세요.
});

위의 코드에서 주석 부분에 원하는 애니메이션 효과를 구현하는 코드를 작성하면 됩니다.

2. 스크롤 위치 감지

스크롤 애니메이션을 추가하기 위해 스크롤 위치를 감지해야 합니다. 이를 위해 window.pageYOffset 속성을 사용합니다. 이 속성은 스크롤된 높이를 픽셀 단위로 반환합니다.

window.addEventListener('scroll', function() {
  var scrollPosition = window.pageYOffset;
  // 스크롤 위치를 이용한 애니메이션 코드를 작성하세요.
});

scrollPosition 변수에 스크롤된 높이가 저장되므로, 이를 이용하여 애니메이션을 구현할 수 있습니다.

3. 애니메이션 효과 추가

스크롤 위치를 이용하여 원하는 애니메이션 효과를 추가할 수 있습니다. 예를 들어, 스크롤 위치가 특정 위치에 도달하면 페이드인 효과를 줄 수 있습니다.

window.addEventListener('scroll', function() {
  var scrollPosition = window.pageYOffset;

  var element = document.getElementById('target-element');
  var elementPosition = element.offsetTop;

  if (scrollPosition >= elementPosition) {
    element.style.opacity = '1';
  } else {
    element.style.opacity = '0';
  }
});

위의 코드는 target-element라는 id를 가진 요소를 페이드인/페이드아웃하는 예시입니다. 스크롤 위치가 해당 요소의 위치에 도달하면 요소의 투명도를 1로 지정하고, 그 외에는 투명도를 0으로 지정합니다.

4. 요소 애니메이션 추가

스크롤 위치를 이용한 애니메이션 효과를 주고 싶은 요소에 CSS 애니메이션 효과를 추가할 수도 있습니다. 예를 들어, 요소가 왼쪽에서 오른쪽으로 이동하면서 서서히 나타나게 할 수 있습니다.

@keyframes slide-in {
  0% {
    opacity: 0;
    transform: translateX(-100px);
  }

  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

#target-element {
  animation: slide-in 1s ease-out;
}

위의 CSS 코드에서 slide-in이라는 이름의 애니메이션을 정의하고, #target-element 요소에 애니메이션을 적용하는 예시입니다. 요소는 왼쪽에서 오른쪽으로 이동하면서 페이드인 효과가 적용됩니다.

참고 자료