嗯哼。很少說,直接上代碼了。spa
// 爲元素 綁定拖動事件 function bindDragEvent(obj){ obj.onmousedown = function(e){ e = e || window.event; obj.setCapture && obj.setCapture(); // IE8 及如下 強制捕獲下一次單擊事件 obj.fixedX = e.clientX - (obj.getBoundingClientRect().left - document.documentElement.clientLeft); obj.fixedY = e.clientY - (obj.getBoundingClientRect().top - document.documentElement.clientTop); document.onmousemove = function(e){ e = e || window.event; var x = e.clientX + (document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft); var y = e.clientY + (document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop); obj.style.left = x - obj.fixedX + "px"; // 元素在頁面中的座標 = 鼠標在頁面中的座標 - 元素在頁面中的座標 obj.style.top = y - obj.fixedY + "px"; }; document.onmouseup = function(){ document.onmousemove = null; // 解除 鼠標移動div跟隨 事件 document.onmouseup = null; // 解除鼠標鬆開事件 obj.releaseCapture && obj.releaseCapture(); // IE8 及如下 解除強制捕獲單擊事件 }; return false; }; }