[javascript] 드래그 앤 드롭 기능을 사용하여 웹 페이지에서 요소를 이동시키는 방법

드래그 앤 드롭을 구현하는 방법은 여러 가지가 있지만, 이번 예제에서는 JavaScript를 사용하여 구현해보겠습니다. 먼저 HTML 파일을 작성합니다.

<!DOCTYPE html>
<html>
  <head>
    <title>드래그 앤 드롭</title>
    <style>
      .drag {
        width: 100px;
        height: 100px;
        background-color: lightblue;
        position: absolute;
        cursor: pointer;
      }

      .container {
        width: 500px;
        height: 300px;
        border: 1px solid black;
        position: relative;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="drag" id="dragElement">드래그 앤 드롭</div>
    </div>

    <script>
      var dragElement = document.getElementById("dragElement");
      var container = document.querySelector(".container");

      dragElement.addEventListener("mousedown", function(event) {
        var startX = event.clientX - dragElement.offsetLeft;
        var startY = event.clientY - dragElement.offsetTop;

        document.addEventListener("mousemove", moveElement);
        document.addEventListener("mouseup", removeListeners);

        function moveElement(event) {
          var newPosX = event.clientX - startX;
          var newPosY = event.clientY - startY;

          if (
            newPosX >= 0 &&
            newPosX + dragElement.offsetWidth <= container.offsetWidth
          ) {
            dragElement.style.left = newPosX + "px";
          }

          if (
            newPosY >= 0 &&
            newPosY + dragElement.offsetHeight <= container.offsetHeight
          ) {
            dragElement.style.top = newPosY + "px";
          }
        }

        function removeListeners() {
          document.removeEventListener("mousemove", moveElement);
          document.removeEventListener("mouseup", removeListeners);
        }
      });
    </script>
  </body>
</html>

이 HTML 코드는 실제로 드래그 앤 드롭 기능을 구현합니다. div with class “drag”가 드래그 대상 요소이고, div with class “container”가 드롭할 수 있는 영역입니다.

JavaScript 코드는 dragElement를 mousedown 이벤트로 등록하여 드래그 시작 시 마우스의 X, Y 위치와 dragElement의 X, Y 위치를 계산합니다. 그런 다음 mousemove 이벤트에 moveElement 함수를 등록하여 드래그 중에 dragElement를 이동시킵니다. 마지막으로 mouseup 이벤트에 removeListeners 함수를 등록하여 드래그를 끝냈습니다.

이 코드를 실행해보면 드래그 앤 드롭 기능을 확인할 수 있습니다. 요소를 클릭하고 드래그하여 원하는 위치로 드롭할 수 있습니다.

이 예제는 간단한 드래그 앤 드롭 기능을 보여주는 것이며, 실제로는 더 복잡한 상황에서 사용될 수 있습니다. 웹 개발에서 드래그 앤 드롭을 구현하는 방법은 다양하니 필요한 상황에 맞게 활용하시면 됩니다.

참고 자료: