Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML DOM draggable 속성 완벽 정리 – 요소 드래그 가능 여부 설정하기

HTML DOM의 draggable 속성은 특정 요소가 드래그 가능한지 여부를 나타내는 불리언(Boolean) 값을 반환하거나 설정하는 데 사용됩니다. 이 속성을 활용하면 웹 페이지에서 이미지, 텍스트 등 다양한 요소를 자유롭게 끌어다 놓는 드래그 앤 드롭(Drag & Drop) 기능을 구현할 수 있습니다.

참고: 링크(<a>) 태그와 이미지(<img>) 태그는 별도의 설정 없이도 기본적으로 드래그가 가능합니다.

draggable 속성의 주요 값

  • true – 해당 요소를 드래그할 수 있습니다.
  • false – 해당 요소를 드래그할 수 없습니다.
  • auto – 브라우저의 기본 동작에 따라 결정됩니다.

HTML draggable 속성 예제

아래 예제는 draggable 속성과 함께 ondragstart, ondrop, ondragover 이벤트를 활용해 피자 조각을 두 사람에게 드래그 앤 드롭으로 분배하는 간단한 프로그램입니다.

<!DOCTYPE html>
<html>
<head>
<title>HTML DOM draggable</title>
<style>
   * {
      padding: 2px;
      margin:5px;
   }
   form {
      width:70%;
      margin: 0 auto;
      text-align: center;
   }
   fieldset {
      min-height: 200px;
   }
   input[type="button"] {
      border-radius: 10px;
   }
   .options{
      display: inline-block;
   }
   #paulaShare {
      width: 200px;
      height: 70px;
      padding: 10px;
      border: 2px solid black;
   }
   #adamShare {
      width: 200px;
      height: 70px;
      padding: 10px;
      border: 2px solid black;
   }
</style>
   <script>
      function allowDrop(dragEvent) {
         dragEvent.preventDefault();
      }
      function drag(dragEvent) {
         dragEvent.dataTransfer.setData("Text", dragEvent.target.id);
      }
      function drop(dragEvent) {
         var data = dragEvent.dataTransfer.getData("Text");
         dragEvent.target.appendChild(document.getElementById(data));
         dragEvent.preventDefault();
      }
   </script>
</head>
<body>
   <form>
      <fieldset>
         <legend>HTML-DOM-draggable</legend>
         <div class="options" id="paulaShare" ondrop="drop(event)"
         ondragover="allowDrop(event)">Paula's Share</div><br>
         <div class="options">
         <p id="optionOne" draggable="true" ondragstart="drag(event)">3/8</p>
         <p id="optionTwo" draggable="true" ondragstart="drag(event)">5/8</p>
         </div><br>
         <div class="options" id="adamShare" ondrop="drop(event)"
         ondragover="allowDrop(event)">Adam's Share</div>
         <div id="display">Distribute 8 pizza slices between Adam and Paula in ration 3:5</div>
</body>
</html>

코드 설명

  • draggable="true": '3/8'과 '5/8' 텍스트 요소를 드래그 가능 상태로 설정합니다.
  • ondragstart: 드래그가 시작될 때 dataTransfer 객체에 드래그되는 요소의 ID를 저장합니다.
  • ondragover: allowDrop 함수가 preventDefault()를 호출하여 해당 영역에 요소를 드롭할 수 있도록 허용합니다.
  • ondrop: 드롭된 위치에 저장된 ID의 요소를 추가하여 드래그 앤 드롭을 완료합니다.

실행 결과

드래그하기 전 화면 −

HTML DOM draggable 속성 완벽 정리 – 요소 드래그 가능 여부 설정하기

드래그한 후 화면 −

HTML DOM draggable 속성 완벽 정리 – 요소 드래그 가능 여부 설정하기

마무리

draggable 속성은 단독으로는 기능이 제한적이지만, Drag & Drop API의 다양한 이벤트(ondragstart, ondragover, ondrop 등)와 함께 사용하면 파일 업로드, 항목 정렬, 할 일 목록 관리처럼 직관적인 사용자 인터페이스를 쉽게 만들 수 있습니다. 위 예제를 응용하여 자신만의 드래그 앤 드롭 기능을 직접 구현해 보시기 바랍니다.