<!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>
<!-- 根据封装的思想:相同代码,好多地方要用,就封装成函数
封装步骤:
1.直接把相同代表当函数体放进去
2.不能写死的数据,当参数传进来 -->
<style>
.box {
width: 100px;
height: 100px;
background-color: rgb(245, 2, 2);
margin-top: 20px;
position: absolute;
}
</style>
</head>
<body>
<input type="button" value="移动到400" id="btn1">
<input type="button" value="移动到800" id="btn2">
<div class="box"></div>
<script>
// 找到元素
var box = document.querySelector('.box');
// 添加点击事件
document.getElementById('btn1').onclick = function () {
// 调用方法
ben(400);
}
document.getElementById('btn2').onclick = function () {
ben(800);
}
// 封装方法
function ben(add) {
// 添加计时器
var timerID = setInterval(function () {
// 获取一下当前位置
var box1 = box.offsetLeft;
// 要用距离 判断是否大于10,大于就走,不大于就直接到目的地
if ((add - box1) > 10) {
// 当前位置往前走1步(1步为10像素)
box1 += 10
box.style.left = box1 + "px";
} else {
//距离不够走一步,就直接到目的地
box.style.left = add + "px";
}
// 如果到了目的地就停止
if (add == box1) {
clearInterval(timerID);
}
}, 20)
}
</script>
</body>
</html>