BOM을 활용하여 스크롤 이벤트 처리하기

웹 애플리케이션에서 스크롤 이벤트를 처리하기 위해 Browser Object Model (BOM)을 사용할 수 있습니다. BOM은 웹 브라우저의 창(window)이나 프레임(frames)에 접근하여 제어할 수 있는 객체 모델을 제공합니다. 스크롤 이벤트를 처리하기 위해 BOM의 window 객체를 사용하면 됩니다.

스크롤 이벤트 등록하기

스크롤 이벤트를 등록하기 위해서는 window 객체의 addEventListener 메소드를 사용합니다. 이 메소드는 이벤트 이름과 이벤트가 발생했을 때 호출될 콜백 함수를 인자로 받습니다.

window.addEventListener('scroll', function() {
  // 스크롤 이벤트 발생 시 실행할 코드 작성
});

위의 코드에서 scroll 이벤트가 발생하면 익명의 콜백 함수가 호출됩니다. 이 콜백 함수에서 스크롤 이벤트 처리에 필요한 코드를 작성하면 됩니다.

스크롤 위치 가져오기

스크롤 이벤트 처리에는 종종 현재 스크롤 위치를 알아야 할 때가 있습니다. BOM의 window 객체를 통해 현재 스크롤 위치를 가져올 수 있습니다.

window.addEventListener('scroll', function() {
  var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  // 현재 스크롤 위치를 사용하는 코드 작성
});

위의 코드에서 scrollTop 변수에 현재 스크롤 위치를 저장하고 있습니다. 이 변수를 알맞게 활용하여 필요한 동작을 구현하면 됩니다.

스크롤 이벤트 제한하기

스크롤 이벤트는 사용자의 스크롤 동작에 의해 매우 빈번하게 발생할 수 있습니다. 때로는 이벤트 발생 빈도를 제한하는 것이 필요할 수 있습니다. 이를 위해 window 객체의 setTimeout 메소드를 사용하여 이벤트 발생 후 일정 시간이 지난 후에만 처리할 수 있도록 할 수 있습니다.

var scrolling = false;

window.addEventListener('scroll', function() {
  if (!scrolling) {
    scrolling = true;
    setTimeout(function() {
      // 스크롤 이벤트 처리
      scrolling = false;
    }, 200); // 200ms 후에 스크롤 이벤트 처리
  }
});

위의 코드에서는 scrolling 변수를 사용하여 현재 스크롤 이벤트가 처리 중인지를 확인하고 있습니다. 일정 시간 후에 scrolling 변수를 다시 false로 설정하여 다음 스크롤 이벤트를 처리할 수 있도록 하고 있습니다.

위에서 알아본 방식들을 활용하여 웹 애플리케이션에서 스크롤 이벤트를 처리할 수 있습니다. BOM을 사용하여 웹 브라우저의 스크롤 동작을 감지하고 원하는 동작을 수행할 수 있습니다.



References: