javascript动画之跟随运动

本文通过示例代码详细讲解了如何使用JavaScript实现元素的跟随运动效果,通过改变元素的坐标来达到动态跟随的目的,适用于网页交互设计和动态效果实现。

demo代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>跟随运动</title>
	<style type="text/css">
		* {
			margin: 0;
			padding: 0;
		}
		body {
			height: 3000px;
		}
		div {
			width: 100px;
			height: 100px;
			background: red;
			border: 1px solid #000;
			position: absolute;
			left: 0;
			top: 0;
		}
	</style>
</head>
<body>
	<div id="box">1</div>
	<script type="text/javascript">
		var box = document.getElementById("box");
		var timer = null;
		var leaderX = 0;
		var leaderY = 0;
		var targetX = 0;
		var targetY = 0;
		// clientX表示的是可视区域距离左边的距离;
		// pageY表示距离浏览器顶端的距离,就相当于document.documentElement.scrollTop(被卷去的部分)加上clientX(可视区域的部分);
		// screentY表示的是距离屏幕顶端的位置
		document.onclick = function(event){
			// console.log(event)
			targetX = event.clientX + document.documentElement.scrollLeft;
			targetY = event.clientY + document.documentElement.scrollTop;
			timer = setInterval(function(){
				var speedY = targetY > leaderY ? Math.ceil((targetY-leaderY))/10 : Math.floor((targetY - leaderY)/10);
				var speedX = targetX > leaderX ? Math.ceil((targetX-leaderX))/10 : Math.floor((targetX - leaderX)/10);
				leaderX = leaderX + speedX;
				leaderY = leaderY + speedY;
				box.style.top = leaderY + "px";
				box.style.left = leaderX + "px";
				if(Math.abs(targetY - leaderY) <= Math.abs(speedY) || Math.abs(targetX - leaderX) <= Math.abs(speedX)){
					clearInterval(timer);
				};
			},30);
		}
	</script>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值