[javascript] 터치 이벤트를 사용하여 드래그 시 터치된 엘리먼트를 따라 움직이는 방법은?

먼저, 터치 이벤트에 대한 EventListener를 등록합니다.

const draggableElement = document.getElementById('draggable');

let startX, startY, offsetX, offsetY;

draggableElement.addEventListener('touchstart', (e) => {
  e.preventDefault();
  const touch = e.targetTouches[0];
  startX = touch.clientX;
  startY = touch.clientY;
  offsetX = parseFloat(getComputedStyle(draggableElement).left);
  offsetY = parseFloat(getComputedStyle(draggableElement).top);
});

draggableElement.addEventListener('touchmove', (e) => {
  e.preventDefault();
  if (startX !== undefined && startY !== undefined) {
    const touch = e.targetTouches[0];
    const dx = touch.clientX - startX;
    const dy = touch.clientY - startY;
    draggableElement.style.left = offsetX + dx + 'px';
    draggableElement.style.top = offsetY + dy + 'px';
  }
});

draggableElement.addEventListener('touchend', () => {
  startX = undefined;
  startY = undefined;
});

위 코드에서는 touchstart 이벤트가 발생했을 때 초기 터치 위치와 드래그 대상 엘리먼트의 초기 위치를 저장하고, touchmove 이벤트가 발생했을 때 터치의 변화량을 계산하여 엘리먼트를 움직입니다. 마지막으로 touchend 이벤트가 발생했을 때 초기 터치 위치를 초기화하여 드래그가 종료됨을 알립니다.

이 코드를 사용하면 터치된 엘리먼트를 드래그할 수 있게 됩니다.