Thuộc tính sự kiện ondragleave kích hoạt khi phần tử đang kéo rời khỏi một vùng drop hợp lệ.
Cú pháp
<tagname ondragleave="script"></tagname>
Ví dụ
<!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>Demo ondragleave</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>Kéo vòng tròn đỏ giữa hai ô</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 = "Đã vào vùng thả";
}
}
function dragLeave(event) {
if (event.target.className == "drop-target") {
event.target.style.background = "transparent";
document.querySelector(".show").innerHTML = "Đã rời vùng thả";
}
}
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>
Kết quả
Kéo vòng tròn vào ô → ô sáng lên, hiển thị "Đã vào vùng thả". Kéo ra khỏi ô → ô tối lại, hiển thị "Đã rời vùng thả".
Cặp đôi: ondragenter (vào) + ondragleave (ra) để tạo hiệu ứng visual feedback khi kéo thả.