[javascript] 드래그 앤 드롭 효과를 활용한 웹사이트용 요소 스와이프 구현 방법

웹사이트에서 요소 스와이프(요소를 좌우로 움직이는 효과)를 구현하고 싶다면, 드래그 앤 드롭 효과를 활용할 수 있습니다. 이 기능을 구현하기 위해 다음과 같은 단계를 따르면 됩니다.

1. 스와이프할 요소 선택

우선, 스와이프 효과를 구현할 요소를 선택해야 합니다. 이 요소는 스와이프 동작에 반응할 수 있도록 설정해야 합니다. 예를 들어, 스와이프할 이미지 슬라이더를 만들고자 한다면, 해당 슬라이더를 선택해야 합니다.

2. 이벤트 리스너 등록

선택한 요소에 “mousedown” 이벤트 리스너를 등록하여 마우스 클릭 이벤트를 감지할 수 있도록 합니다. 이때, 드래그 동작을 시작하는 지점도 같이 저장합니다.

const element = document.querySelector(".swipe-element");
let startX = 0;

element.addEventListener("mousedown", (event) => {
  startX = event.clientX;
});

3. 드래그 이벤트 처리

요소에서 마우스 버튼을 누른 상태로 이동할 때 발생하는 “mousemove” 이벤트를 감지하여 드래그 이벤트를 처리합니다. 드래그 이동 거리에 따라 요소를 좌우로 움직이는 효과를 구현할 수 있습니다.

document.addEventListener("mousemove", (event) => {
  if (startX !== 0) {
    const moveX = event.clientX - startX;
    element.style.transform = `translateX(${moveX}px)`;
  }
});

4. 드롭 이벤트 처리

마우스 버튼을 놓았을 때 발생하는 “mouseup” 이벤트를 감지하여 드롭 이벤트를 처리합니다. 이때, 드래그된 거리에 따라 어느 방향으로 스와이프되었는지를 확인하여 처리할 수 있습니다.

document.addEventListener("mouseup", () => {
  if (startX !== 0) {
    const moveX = event.clientX - startX;
    if (moveX > 0) {
      // 오른쪽으로 스와이프
      // 스와이프 동작에 따른 추가 처리를 구현합니다.
    } else if (moveX < 0) {
      // 왼쪽으로 스와이프
      // 스와이프 동작에 따른 추가 처리를 구현합니다.
    }
  }

  startX = 0;
});

마무리

드래그 앤 드롭 효과를 활용한 스와이프 구현은 위 단계를 따라하면 비교적 간단하게 구현할 수 있습니다. 필요에 따라 “touchstart”, “touchmove”, “touchend” 이벤트를 사용하여 터치 기반 장치에서도 동작하도록 확장할 수 있습니다. 또한, 애니메이션 효과나 스와이프 범위 제한 등을 추가로 구현할 수도 있습니다.

이 외에도 여러 가지 방법으로 스와이프 효과를 구현할 수 있으니, 상황에 맞게 적절한 방법을 선택하여 적용해 보시기 바랍니다.

참고자료: