index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style type="text/css">
#box{
width: 300px;
height: 300px;
background: #999;
position: absolute;
left: 0;
top: 0;
}
#head{
width: 100%;
height: 50px;
background: #000000;
position: absolute;
left: 0;
top: 0;
}
#head span{
width: 50px;
height: 50px;
color: black;
background: yellow;
position: absolute;
right: 0;
top: 0;
}
</style>
</head>
<body>
<div id="box">
<div id="head">
<span>B</span>
</div>
</div>
<script src="drag01.js"></script>
<script type="text/javascript">
drag('box','head');
</script>
</body>
</html>
drag01.js
var arr = [];
function drag(id,deId){
var ele = document.getElementById(id);
ele.onmousedown = function(evt){
evt = evt || window.event;
var disX = evt.offsetX;
var disY = evt.offsetY;
var target = evt.target || evt.srcElement;
arr.push({left : ele.offsetLeft,top : ele.offsetTop});
if(target.id == deId){
document.onmousemove = function(evt){
evt = evt || window.event;
var left = evt.pageX - disX;
var top = evt.pageY - disY;
if(left <= 0){
left = 0;
}else if(left >= document.documentElement.clientWidth - ele.offsetWidth){
left = document.documentElement.clientWidth - ele.offsetWidth;
}
if(top <= 0){
top = 0;
}else if(top >= document.documentElement.clientHeight - ele.offsetHeight){
top = document.documentElement.clientHeight - ele.offsetHeight;
}
ele.style.left = left + 'px';
ele.style.top = top + 'px';
arr.push({left : ele.offsetLeft,top : ele.offsetTop});
}
document.onmouseup = function(){
document.onmousemove = null;
}
document.ondragstart = function(){
return false;
}
}
}
}
效果图(鼠标按下黑色边框可自由拖拽)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9c7964218418c3bcca19caa4d3388c16.png)