移动盒子

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{
		margin: 0;
		padding: 0;
	}
	#div{
		 width: 100px;
         height:100px;
         background-color: #f00;
         position: absolute;
         /*left是往右移动的*/
         /*left:100px; */
	}
	button{
		position: relative;
		top: 120px;
		cursor:pointer;
	}
	</style>
</head>
<body>
<div id="div"></div>
<button>点击开始</button>
<button>点击停止</button>
<script>
// 逻辑:1.一个元素动起来,其实就是位置的移动
// 2.连续动起来需要一个定时器(有一个开关才行,为防止多个定时器累积)
// 需要对移动做条件(当移动距离大于body宽度或小于0)
// 当满足两个条件 做相反移动
let buts = document.getElementsByTagName('button')
let div = document.getElementById('div')
let body = document.body
let num = 0
let timer = null
buts[0].onclick = function() {
	// 声明一个变量speed,也就是移动的速度
	let speed = 5;
	if(timer==null){
		timer = setInterval(()=>{
			num+=speed
			div.style.left = num+'px'//元素移动的核心
			// 当距离大于body宽度或小于0
			if(num>=body.offsetWidth-div.offsetWidth||num<=0){
				 // 速度变量取反
                        speed = -speed;
			}

		},100)
	}
}
   buts[1].onclick = function(){
            clearInterval(timer);
            timer=null;
        }

</script>
	
</body>
</html>
posted @ 2021-08-08 09:01  黑蛋的博客  阅读(30)  评论(0编辑  收藏  举报