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

HTML ondragenter 이벤트 속성 완벽 가이드 – 문법과 실전 예제


HTML ondragenter 이벤트 속성은 드래그 가능한 요소나 텍스트가 문서 내 유효한 드롭 대상(drop target) 영역에 진입하는 순간 실행되는 이벤트 핸들러입니다. 주로 드래그 앤 드롭(Drag & Drop) 인터페이스에서 사용자가 요소를 특정 영역 위로 가져올 때 배경색 변경 등 시각적 피드백을 제공하는 데 활용됩니다.

문법(Syntax)

ondragenter 이벤트 속성의 기본 문법은 다음과 같습니다.

<tagname ondragenter=”script”></tagname>

여기서 script 부분에는 해당 이벤트가 발생했을 때 실행할 JavaScript 코드를 작성합니다.

예제(Example)

다음은 HTML ondragenter 이벤트 속성을 활용한 실전 예제입니다. 빨간 원을 두 개의 박스 사이로 드래그하면, 각 박스에 진입하거나 벗어날 때 배경색이 변하고 안내 메시지가 함께 표시됩니다.

<!DOCTYPE html>
<html>
<head>
<style>
   body {
      color: #000;
      height: 100vh;
      background-color: #FBAB7E;
      background-image: linear-gradient(62deg, #FBAB7E 0%, #F7CE68 100%);
      text-align: center;
   }
   .drop-target {
      display: inline-block;
      width: 150px;
      height: 150px;
      border: 2px solid #FFF;
      margin: 1rem;
      vertical-align: middle;
      padding: 20px;
   }
   .circle {
      background: #db133a;
      height: 40px;
      width: 40px;
      border-radius: 50%;
   }
   .show {
      color: #fff;
      font-size: 1.2rem;
   }
</style>
</head>
<body>
<h1>HTML ondragenter Event Attribute Demo</h1>
<div class="drop-target" ondrop="drop(event)" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" ondragover="allowDrop(event)">
<p ondragstart="dragStart(event)" draggable="true" id="dragtarget" class='circle'></p>
</div>
<div class="drop-target" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<p>Now try to drag and drop the red circle</p>
<div class="show"></div>
<script>
   function dragStart(event) {
      event.dataTransfer.setData("Text", event.target.id);
   }
   function dragEnter(event) {
      if (event.target.className == "drop-target") {
         event.target.style.background = "#db133a3d";
         document.querySelector(".show").innerHTML = "Passed into the dropzone";
      }
   }
   function dragLeave(event) {
      if (event.target.className == "drop-target") {
         event.target.style.background = "transparent";
         document.querySelector(".show").innerHTML = "Passed out the dropzone";
      }
   }
   function allowDrop(event) {
      event.preventDefault();
   }
   function drop(event) {
      event.preventDefault();
      var data = event.dataTransfer.getData("Text");
      event.target.appendChild(document.querySelector('.circle'));
   }
</script>
</body>
</html>

출력 결과(Output)

HTML ondragenter 이벤트 속성 완벽 가이드 – 문법과 실전 예제

코드를 실행하면 위와 같이 두 개의 드롭 영역이 나타납니다. 이제 빨간 원을 두 박스 사이로 드래그 앤 드롭해 보면서 ondragenter 이벤트 속성이 어떻게 동작하는지 직접 확인해 보세요.

HTML ondragenter 이벤트 속성 완벽 가이드 – 문법과 실전 예제

주요 함수 동작 방식

  • dragStart() : 드래그가 시작되면 요소의 id 값을 dataTransfer 객체에 저장합니다.
  • dragEnter() : 드래그 중인 요소가 드롭 영역에 진입하면 배경색을 반투명 붉은색으로 변경하고 안내 메시지를 출력합니다.
  • dragLeave() : 드래그 중인 요소가 드롭 영역을 벗어나면 배경색을 투명하게 되돌립니다.
  • allowDrop() : 기본 동작을 차단(preventDefault)하여 해당 영역에 요소를 드롭할 수 있도록 허용합니다.
  • drop() : 드롭이 완료되면 저장된 데이터를 기반으로 드래그된 요소를 해당 영역으로 이동시킵니다.

이처럼 ondragenter는 ondragstart, ondragover, ondragleave, ondrop 등 다른 드래그 관련 이벤트 속성들과 함께 사용하면 더욱 직관적인 드래그 앤 드롭 사용자 경험을 구현할 수 있습니다.