知识点: DOM获取元素+event(事件对象)+鼠标事件+事件对象属性+document.documentElement的clientHeight和clientWidth
html部分
<div id="box"></div>
css部分
#box{
width: 100px;
height: 100px;
background: red;
position: absolute;
top: 0;
left: 0;
}
JS部分
let box = document.getElementById('box');
box.onmousedown = function(evt){
//事件对象 兼容IE
let e = evt || window.event;
let dis_x = e.offsetX;
let dis_y = e.offsetY;
document.onmousemove = function(evt){
let e = evt || window.event;
let left = e.pageX - dis_x;
let top = e.pageY - dis_y;
//设置左右边界
if(left >= document.documentElement.clientWidth - box.clientWidth){
left = document.documentElement.clientWidth - box.clientWidth
}else if(left <= 0){
left = 0
}
//设置上下边界
if(top >= document.documentElement.clientHeight - box.clientHeight){
top = document.documentElement.clientHeight - box.clientHeight
}else if(top <= 0){
top = 0
}
box.style.left = left + 'px';
box.style.top = top + 'px';
}
box.onmouseup = function(){
//取消鼠标移动事件
document.onmousemove = null
}
}