자바스크립트 애니메이션 프레임을 활용한 스크롤 페이드 효과 애니메이션 만들기

자바스크립트의 애니메이션 프레임을 사용하여 스크롤 페이드 효과 애니메이션을 만드는 방법에 대해 알아보겠습니다.

목차

요구 사항

이 튜토리얼을 따라하기 위해 다음 요구 사항이 필요합니다.

HTML 구조

첫 번째로, 스크롤 페이드 효과를 생성할 HTML 구조를 작성해야 합니다. 예를 들어, 아래와 같은 구조를 사용할 수 있습니다.

<div class="fade-container">
  <div class="fade-element"></div>
  <div class="fade-element"></div>
  <div class="fade-element"></div>
</div>

위의 예시에서는 .fade-container라는 부모 요소와 각각 .fade-element라는 자식 요소들이 있습니다. 이 구조를 자유롭게 변경할 수 있으며, 필요에 따라 추가적인 스타일링을 할 수 있습니다.

CSS 스타일링

다음으로, 스크롤 페이드 효과를 위한 CSS 스타일링을 추가해야 합니다. 아래는 간단한 예시입니다.

.fade-container {
  height: 100vh;
  overflow: hidden;
}

.fade-element {
  height: 100vh;
  opacity: 0;
  transition: opacity 0.5s ease;
}

.fade-element.fade-in {
  opacity: 1;
}

위의 예시에서는 .fade-container의 높이를 100vh로 설정하고, overflow: hidden으로 설정하여 내부 요소의 위치를 고정하고 스크롤 효과를 생성합니다. .fade-element는 초기에 투명도가 0으로 설정되고, transition 속성을 사용하여 부드러운 애니메이션 효과를 부여합니다. 마지막으로 .fade-element.fade-in은 스크롤 이벤트를 통해 추가되는 클래스로, 투명도를 1로 설정하여 요소가 페이드되도록 합니다.

자바스크립트 로직

이제 자바스크립트를 사용하여 스크롤 페이드 효과를 추가할 수 있습니다. 아래는 예시 코드입니다.

window.addEventListener('scroll', fadeInElements);

function fadeInElements() {
  const elements = Array.from(document.querySelectorAll('.fade-element'));
  
  elements.forEach(element => {
    const elementTop = element.getBoundingClientRect().top;
    const elementBottom = element.getBoundingClientRect().bottom;
    const windowHeight = window.innerHeight;
    
    if (elementTop < windowHeight && elementBottom > 0) {
      element.classList.add('fade-in');
    }
  });
}

위의 예시에서는 Window의 scroll 이벤트에 대한 리스너를 추가합니다. fadeInElements 함수는 scroll 이벤트가 발생할 때 호출되며, .fade-element들로 구성된 요소를 가져와 각 요소의 위치를 확인합니다. 만약 요소가 화면에 보이는 범위 내에 있다면, fade-in 클래스를 추가하여 요소가 페이드되도록 설정합니다.

결론

위의 단계를 따라하면 자바스크립트 애니메이션 프레임을 활용한 스크롤 페이드 효과 애니메이션을 만들 수 있습니다. 이를 응용하여 웹 페이지에 적용하면 자연스러운 스크롤 페이드 효과를 구현할 수 있습니다. 어디에서든 이 효과를 사용할 수 있으며, 적절한 시기에 요소가 나타나게 만들어 사용자 경험을 향상시킬 수 있습니다.

참고 자료: