1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> #div{ width: 100px;height: 100px;background: red;position: absolute;} </style> </head> <script type="text/javascript"> var speedX = 6; var speedY = 8; const g = 3; var timer = null; function startMove(){ clearInterval(timer); timer = setInterval(function() { var oDiv = document.getElementById('div'); speedY += g; var t = oDiv.offsetTop + speedY; var l = oDiv.offsetLeft + speedX; if (t >= document.documentElement.clientHeight - oDiv.offsetHeight) { speedY *= -0.8; speedX *= 0.8; t = document.documentElement.clientHeight - oDiv.offsetHeight; } else if(t <= 0) { speedY *= -1; speedX *= 0.8; t = 0; } if (l >= document.documentElement.clientWidth - oDiv.offsetWidth) { speedX *= -0.8; l = document.documentElement.clientWidth - oDiv.offsetWidth; } else if(l <= 0) { speedX *= -0.8; l = 0; } if (Math.abs(speedX) < 1) { speedX = 0; } if (Math.abs(speedY) <1 ) { speedY = 0; } if (speedX === 0 && speedY === 0 && t === document.documentElement.clientHeight - oDiv.offsetHeight) { clearInterval(timer); } else { oDiv.style.top = t + 'px'; oDiv.style.left = l + 'px'; } }, 30); } window.onload = function() { var oDiv = document.getElementById('div'); var lastX = 0; var lastY = 0; oDiv.onmousedown = function(event) { var disX = event.clientX - oDiv.offsetLeft; var disY = event.clientY - oDiv.offsetTop; document.onmousemove = function(event){ var l = event.clientX - disX; var t = event.clientY - disY; oDiv.style.top = t + 'px'; oDiv.style.left = l + 'px'; speedX = l - lastX; speedY = t - lastY; lastX = l; lastY = t; document.title = 'x:' + speedX + 'y:' + speedY; } document.onmouseup = function() { document.onmousemove = null; document.onmouseup = null; startMove(); } clearInterval(timer); } } </script> <body> <div id="div"></div> </body> </html>
|