<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title> 移动动画的封装之终极封装:解决多个元素会互相影响的问题 </title>
<style>
div {
width: 100px;
height: 100px;
background-color: #f00;
position: absolute;
margin-top: 10px;
}
.blue {
background-color: #00f;
top: 150px;
}
</style>
</head>
<body>
<!--
解决的是先点移动红,再点移动蓝,会把红色计时器给停止掉
解决办法:让自己只能停自己的计时器
不要用全局变量,而是停自己的timerID,以及把新的timerID存在自己身上
-->
<input type="button" value="移动蓝色到400" id="btn">
<input type="button" value="移动红色到1200" id="btn1">
<input type="button" value="移动蓝色到800" id="btn2">
<div class="red"></div>
<div class="blue"></div>
<script>
//找到div
var red = document.querySelector('.red');
var blue = document.querySelector('.blue');
function ben(add1, add2) {
clearInterval(add1.timerID);
add1.timerID = setInterval(function () {
var add = add1.offsetLeft;
if (Math.abs(add2 - add) > 10) {
add += add2 > add ? 10 : -10;
add1.style.left = add + "px";
} else {
add1.style.left = add2 = "px";
}
if (add == add2) {
clearInterval(add.timerID);
}
}, 20)
}
// 加点击事件
document.getElementById('btn1').onclick = function () {
ben(red, 1200);
};
document.getElementById('btn2').onclick = function () {
ben(blue, 800);
};
document.getElementById('btn').onclick = function () {
ben(blue, 400);
};
</script>
</body>
</html>
网友评论