[javascript] 터치 이벤트를 사용하여 양방향 스크롤을 처리하는 방법은?

1. 터치 이벤트 핸들링 설정

// 요소 선택
const scrollWrapper = document.getElementById('scrollWrapper');

let startX, startY, currentX, currentY;

scrollWrapper.addEventListener('touchstart', (e) => {
  startX = e.touches[0].clientX;
  startY = e.touches[0].clientY;
});

scrollWrapper.addEventListener('touchmove', (e) => {
  currentX = e.touches[0].clientX;
  currentY = e.touches[0].clientY;

  let diffX = startX - currentX;
  let diffY = startY - currentY;

  if (Math.abs(diffX) > Math.abs(diffY)) {
    // 가로 스크롤
    e.preventDefault();
    // 가로 스크롤 동작 처리
  } else {
    // 세로 스크롤
    e.stopPropagation();
    // 세로 스크롤 동작 처리
  }
});

위 코드는 터치 시작(touchstart) 및 터치 이동(touchmove) 이벤트를 핸들링하여 가로 및 세로 스크롤 동작을 구분하고 처리하는 방법을 보여줍니다.

2. CSS 속성 설정

#scrollWrapper {
  touch-action: pan-x pan-y;
  overflow: hidden;
}

touch-action 속성은 터치 액션의 동작을 지정하며, pan-xpan-y 값은 각각 가로 및 세로 스크롤을 활성화하는 것을 의미합니다.

터치 이벤트를 사용하여 양방향 스크롤을 처리하는 방법에 대해 간단히 살펴보았습니다. 보다 자세한 내용은 MDN web docs에서 확인할 수 있습니다.