<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
body{
margin: 0;
}
div{
width: 100px;
height: 100px;
background-color: red;
position: absolute;
left: 0;
top: 0;
border-radius: 50%;
}
</style>
</head>
<body>
<div></div>
<script>
var oDiv = document.querySelector("div");
oDiv.onmousedown = function (){
clearInterval(oDiv.timer);
var disX = event.pageX - oDiv.offsetLeft;
var disY = event.pageY - oDiv.offsetTop;
var oL = event.pageX,nL = event.pageX,oT = event.pageY,nT = event.pageY,oTime = new Date().getTime(),nTime = new Date().getTime();
var chaX,chaY,chaT,speedX,speedY;
document.onmousemove = function (){
chaX = event.pageX - oL;
chaY = event.pageY - oT;
chaT = new Date().getTime() - oTime;
oL = event.pageX;
oT = event.pageY;
oTime = new Date().getTime();
var newLeft = event.pageX - disX;
var newTop = event.pageY - disY;
oDiv.style.left = newLeft + "px";
oDiv.style.top = newTop + "px";
}
document.onmouseup = function (){
document.onmouseup = document.onmousemove = null;
speedX = chaX / chaT;
speedY = chaY / chaT;
oDiv.timer = setInterval(ballMove,25);
function ballMove(){
var nextX = oDiv.offsetLeft + speedX*25;
if(nextX>=document.documentElement.clientWidth-oDiv.offsetWidth){
nextX = document.documentElement.clientWidth-oDiv.offsetWidth;
speedX = -speedX;
}else if(nextX<=0){
nextX = 0;
speedX = -speedX;
}
var nextY = oDiv.offsetTop + speedY*25;
if(nextY>=document.documentElement.clientHeight-oDiv.offsetHeight){
nextY = document.documentElement.clientHeight-oDiv.offsetHeight;
speedY = -speedY;
}else if(nextY<=0){
nextY = 0;
speedY = -speedY;
}
oDiv.style.left = nextX + "px";
oDiv.style.top = nextY + "px";
}
}
}
</script>
</body>
</html>