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

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

HTML ondrag 이벤트 속성은 사용자가 HTML 문서 내에서 요소를 드래그(끌기)하는 순간 발생하는 이벤트입니다. 드래그 작업이 진행되는 동안 반복적으로 호출되며, 주로 드래그 상태를 화면에 표시하거나 시각적 피드백을 제공할 때 활용됩니다.

참고로 <img><a> 요소는 브라우저에서 기본적으로 드래그가 가능하도록 설정되어 있으므로, 이들 요소에는 draggable 속성이나 ondrag 속성을 따로 지정하지 않아도 됩니다.

문법(Syntax)

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

<tagname ondrag="script"></tagname>

여기서 script 부분에는 드래그 이벤트가 발생했을 때 실행할 자바스크립트 코드를 작성합니다.

예제(Example)

다음은 HTML ondrag 이벤트 속성을 활용한 드래그 앤 드롭 예제입니다. 빨간 원을 두 박스 사이로 끌어다 놓으면 ondrag 이벤트가 어떻게 동작하는지 확인할 수 있습니다.

<!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 ondrag Event Attribute Demo</h1>
<div class="drop-target" ondrop="drop(event)" ondragover="allowDrop(event)">
<p ondragstart="dragStart(event)" ondrag="dragging(event)" draggable="true" class="circle"></p>
</div>
<div class="drop-target" 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 dragging(event) {
        document.querySelector(".show").innerHTML = "Circle is being dragged";
    }
    function allowDrop(event) {
        event.preventDefault();
    }
    function drop(event) {
        event.preventDefault();
        event.target.appendChild(document.querySelector('.circle'));
        document.querySelector(".show").innerHTML = "Circle was dropped";
    }
</script>
</body>
</html>

코드 설명

  • ondragstart: 드래그가 시작되는 순간 호출되며, dataTransfer 객체에 데이터를 저장합니다.
  • ondrag: 드래그가 진행되는 동안 계속 호출되며, 이 예제에서는 "Circle is being dragged"라는 메시지를 화면에 출력합니다.
  • ondragover: 요소 위로 드래그할 때 발생하며, drop을 허용하기 위해 preventDefault()를 호출해야 합니다.
  • ondrop: 드래그한 요소를 놓는 순간 호출되며, 해당 위치에 원을 추가하고 메시지를 갱신합니다.

실행 결과(Output)

위 코드를 실행하면 두 개의 드롭 영역(박스) 안에 빨간 원이 배치된 화면이 나타납니다.

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

이제 빨간 원을 마우스로 잡고 두 박스 사이를 드래그해 보세요. 드래그 중에는 하단에 "Circle is being dragged" 메시지가 표시되고, 다른 박스에 놓으면 "Circle was dropped" 메시지로 바뀌면서 원이 새 위치로 이동합니다.

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

정리

ondrag 이벤트 속성은 드래그 작업 전체 과정에서 지속적으로 발생하기 때문에, 드래그 진행 상황을 사용자에게 알려주는 UI 피드백 구현에 매우 유용합니다. ondragstart, ondragover, ondrop 등 관련 이벤트 속성과 함께 사용하면 완성도 높은 드래그 앤 드롭 인터페이스를 쉽게 만들 수 있습니다.