如图:
代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 100px;
height: 100px;
background: red;
position: absolute;
top: 0;
color: white;
}
.left {
left: 0;
}
.right {
right: 0;
}
</style>
</head>
<body>
<div id="div1" class="box left">DIV1</div>
<div id="div2" class="box right">DIV2</div>
<script>
class Drag {
constructor(id) {
this.oDiv = document.querySelector(id);
this.disx = 0;
this.disy = 0;
this.init();
}
init() {
this.oDiv.onmousedown = function (ev) {
this.disx = ev.clientX - this.oDiv.offsetLeft;
this.disy = ev.clientY - this.oDiv.offsetTop;
document.onmousemove = this.fnMove.bind(this);
document.onmouseup = this.fnUp.bind(this);
return false;
}.bind(this);
}
fnMove(ev) {
this.oDiv.style.left = ev.clientX - this.disx + 'px';
this.oDiv.style.top = ev.clientY - this.disy + 'px';
}
fnUp() {
document.onmousemove = null;
document.onmouseup = null;
}
}
// 子类:限制范围
class LimitDrag extends Drag {
fnMove(ev) {
super.fnMove(ev);
}
}
new Drag('#div1');
new LimitDrag('#div2');
</script>
</body>
</html>