拖拽在前端開發中是很常見的功能,也是基本功之一,本文是不限制範圍的拖拽也就是最簡單的拖拽,鼠標按下對象,拖拽,鬆開停止!
1,onmousedown事件
2,onmousemove事件
3,onmouseup事件因爲在按下時拖動,所以onmousemove事件在down後才註冊,up事件是用來解綁事件,消除事件!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>簡單拖拽</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#div1 {
width: 100px;
height: 100px;
background: orange;
position: absolute;
}
</style>
</head>
<body style="height: 500000px;">
<div id="div1"></div>
<script type="text/javascript">
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, null)[attr];
}
}
var oDiv = document.getElementById('div1');
oDiv.onmousedown = function(ev) {
var oEvent = ev || event;
// var disX = oEvent.clientX - oDiv.offsetLeft;
// var disY = oEvent.clientY - oDiv.offsetTop;
var disX = oEvent.clientX - parseInt(getStyle(oDiv, 'left'));
var disY = oEvent.clientY - parseInt(getStyle(oDiv, 'top'));
document.onmousemove = function(ev) {
var oEvent = ev || event;
oDiv.style.left = oEvent.clientX - disX + 'px';
oDiv.style.top = oEvent.clientY - disY + 'px';
};
document.onmouseup = function() {
document.onmousemove = null;
document.onmouseup = null;
};
return false;
};
</script>
</body>
</html>