移动动画的封装之四:解决只能移动一个元素的问题
2019-05-13 本文已影响0人
椋椋夜色
<!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>
<input type="button" value="移动红色到1200" id="btn1">
<input type="button" value="移动蓝色到800" id="btn2">
<div class="red"></div>
<div class="blue"></div>
<!--
解决只能移动一个元素的问题
解决办法:把不能写死的数据当参数传进来
-->
<script>
// 找到元素
var red = document.querySelector('.red');
var blue = document.querySelector('.blue');
var timerID;
function ben (add1,add2){
// 先清除上一个计时器
clearInterval(timerID);
// 保证不管点多少次,只有一个计时器
timerID = setInterval(function(){
// 获取一下当前位置
var add = add1.offsetLeft;
// 要用距离 判断是否大于10,大于就走,不大于就直接到目的地
if(Math.abs(add2 - add) > 10 ) {
// 当前位置往前走1步(1步为10像素)
add += add2 > add ? 10 : -10;
add1.style.left = add + "px";
}else {
//距离不够走一步,就直接到目的地
add1.style.left = add2 + "px";
}
// 如果到了目的地就停止
if(add == add2) {
clearInterval(timerID);
}
},20 )
}
document.getElementById('btn1').onclick = function() {
ben(red,1200);
}
document.getElementById('btn2').onclick = function() {
ben(blue,800);
}
</script>
</body>
</html>