重力+拖拽+碰撞运动

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>重力+拖拽+碰撞运动</title>
		<style type="text/css">
			html,
			body {
				background: burlywood;
			}
			
			* {
				margin: 0px;
				padding: 0px;
			}
			
			input {
				background: deepskyblue;
			}
			
			#div {
				width: 200px;
				height: 200px;
				position: absolute;
				background: -webkit-repeating-radial-gradient(center, rgb(255, 255, 255), rgb(50, 50, 50));
				/*background: red;*/
				border-radius: 100px;
				cursor: pointer;
			}
			
			div {
				width: 4px;
				height: 4px;
				background: black;
				position: absolute;
			}
		</style>
	</head>

	<body>
		<script type="text/javascript">
			window.onload = function() {
				var div = document.getElementById("div");
				var btn = document.getElementById("btn");
				btn.onclick = function() {
					startMove();
				};
				div.onmousedown = function(ev) {
					var oEvent = ev || event;
					var disX = 0;
					var disY = 0;
					var lastX = 0;
					var lastY = 0;
					disX = oEvent.clientX - div.offsetLeft;
					disY = oEvent.clientY - div.offsetTop;
					document.onmousemove = function(ev) {
						var oEvent = ev || event;
						var L = oEvent.clientX - disX;
						var T = oEvent.clientY - disY;
						var H = window.innerWidth - div.offsetWidth || document.documentElement.clientWidth - div.offsetWidth;
						var V = window.innerHeight - div.offsetHeight || document.documentElement.clientHeight - div.offsetHeight;
						if(L <= 0) {
							L = 0;
						} else if(L >= H) {
							L = H;
						}
						if(T <= 0) {
							T = 0;
						} else if(T >= V) {
							T = V;
						}

						speedX = L - lastX;
						speedY = T - lastY;
						lastX = L;
						lastY = T;
						document.title = "x=" + speedX + "||y=" + speedY;

						//var newDiv=document.createElement("div");
						//newDiv.style.left=L+"px";
						//newDiv.style.top=T+"px";
						//document.body.appendChild(newDiv);

						div.style.left = L + "px";
						div.style.top = T + "px";
					};
					document.onmouseup = function() {
						document.onmousemove = null;
						document.onmouseup = null;
						startMove();
					};
					//return false;
					clearInterval(timer);
				};
				var speedX = 0;
				var speedY = 0;
				var timer = null;

				function startMove() {
					clearInterval(timer);
					timer = setInterval(function() {
						speedY += 10;
						var div = document.getElementsByTagName("div")[0];
						var l = div.offsetLeft + speedX;
						var t = div.offsetTop + speedY;
						var h = document.documentElement.clientWidth - div.offsetWidth;
						var v = document.documentElement.clientHeight - div.offsetHeight;
						if(l <= 0) {
							l = 0;
							speedX *= -0.9;
						} else if(l >= h) {
							l = h;
							speedX *= -0.9;
						}
						if(t <= 0) {
							t = 0;
							speedY *= -1;
							speedX *= 0.99;
						} else if(t >= v) {
							t = v;
							speedY *= -0.9;
							speedX *= 0.99;
						}
						if(Math.abs(speedX) < 1) {
							speedX = 0;
						}
						if(Math.abs(speedY) < 1) {
							speedY = 0;
						}
						if(speedX === 0 && speedY === 0 && t === v) {
							clearInterval(timer);
						} else {
							div.style.left = l + "px";
							div.style.top = t + "px";
						}
					}, 30);
				}
			};
		</script>
		<input type="button" id="btn" value="开始运动" />
		<div id="div"></div>
	</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值