Document: drag 이벤트
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/ko/web/api/htmlelement/index.md)
drag
이벤트는 사용자가 요소 또는 텍스트를 드래그하는 동안 매 수백 밀리초마다 발생합니다.
예제
드래그 앤 드롭 예제
HTML
html
<div class="dropzone">
<div id="draggable" draggable="true">드래그 가능</div>
</div>
<div class="dropzone"></div>
CSS
css
body {
/* 사용자가 예제의 텍스트를 선택하지 못하도록 */
user-select: none;
}
#draggable {
text-align: center;
background: white;
}
.dropzone {
width: 200px;
height: 20px;
background: blueviolet;
margin: 10px;
padding: 10px;
}
.dropzone.dragover {
background-color: purple;
}
.dragging {
opacity: 0.5;
}
JavaScript
js
let dragged;
/* 드래그 가능한 대상에서 발생하는 이벤트 */
document.addEventListener("drag", (event) => {
console.log("dragging");
});
document.addEventListener("dragstart", (event) => {
// 드래그한 요소에 대한 참조 저장
dragged = event.target;
// 반투명하게 만들기
event.target.classList.add("dragging");
});
document.addEventListener("dragend", (event) => {
// 투명도 초기화
event.target.classList.remove("dragging");
});
/* 드롭 대상에서 발생하는 이벤트 */
document.addEventListener(
"dragover",
(event) => {
// 드롭을 허용하기 위해 기본 동작 취소
event.preventDefault();
},
false,
);
document.addEventListener("dragenter", (event) => {
// 드래그 가능한 요소가 대상 위로 오면 강조
if (event.target.classList.contains("dropzone")) {
event.target.classList.add("dragover");
}
});
document.addEventListener("dragleave", (event) => {
// 드래그 가능한 요소가 대상 밖으로 나가면 강조 제거
if (event.target.classList.contains("dropzone")) {
event.target.classList.remove("dragover");
}
});
document.addEventListener("drop", (event) => {
// 일부 요소의 링크 열기와 같은 기본 동작 취소
event.preventDefault();
// 드래그한 요소를 선택한 드롭 대상으로 이동
if (event.target.classList.contains("dropzone")) {
event.target.classList.remove("dragover");
dragged.parentNode.removeChild(dragged);
event.target.appendChild(dragged);
}
});
결과
명세
Specification |
---|
HTML Standard # ix-handler-ondrag |
HTML Standard # event-dnd-drag |
브라우저 호환성
BCD tables only load in the browser