我正在嘗試使用JavaScript在屏幕上拖動圖像。我已經寫了一個腳本,可以很好地處理文本的div,但是當我在圖像上使用它時,它會非常間歇地運行。如何使用純javascript在屏幕上平滑地拖動圖像
我已將我的代碼放在jsfiddle上,以便其他人可以看到我的意思。 http://jsfiddle.net/laurence/YNMEX/
如果您運行它,您會發現可以拖放文本塊,但是當您對圖像嘗試同樣的操作時,會將圖像留在後面。這就像圖像無法跟上鼠標的運動。
我已經重複下面的jsfiddle代碼:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Drag and drop</title>
<style type="text/css">
.dragme {
position:relative;
width: 270px;
height: 203px;
cursor: move;
}
#draggable {
background-color: #ccc;
border: 1px solid #000;
}
</style>
<script type="text/javascript">
function startDrag(e) {
// determine event object
if (!e) {
var e = window.event;
}
// IE uses srcElement, others use target
var targ = e.target ? e.target : e.srcElement;
if (targ.className != 'dragme') {return};
// calculate event X, Y coordinates
offsetX = e.clientX;
offsetY = e.clientY;
// assign default values for top and left properties
if(!targ.style.left) { targ.style.left='0px'};
if (!targ.style.top) { targ.style.top='0px'};
// calculate integer values for top and left
// properties
coordX = parseInt(targ.style.left);
coordY = parseInt(targ.style.top);
drag = true;
// move div element
document.onmousemove=dragDiv;
}
function dragDiv(e) {
if (!drag) {return};
if (!e) { var e= window.event};
var targ=e.target?e.target:e.srcElement;
// move div element
targ.style.left=coordX+e.clientX-offsetX+'px';
targ.style.top=coordY+e.clientY-offsetY+'px';
return false;
}
function stopDrag() {
drag=false;
}
window.onload = function() {
document.onmousedown = startDrag;
document.onmouseup = stopDrag;
}
</script>
</head>
<body>
<div id="draggable" class="dragme">"Hello World!"</div>
<img src="flower.jpg" alt="drag-and-drop image script"
title="drag-and-drop image script" class="dragme">
+1嘗試純JavaScript解決方案。現在我們只需要等待「使用jquery」羣體來跺腳:)。 – Parrotmaster
爲什麼你不使用jQuery? – Aerovistae