封装Animte 动画函数
虽然可能以后的开发中可能根本不需要自己写,Jquery 给我们封装好了,或者用CSS3的一些属性达到这样的效果可能更简单。
我比较喜欢底层的算法实现,万变不离其中,这个逻辑思路,也是需要锻炼的。也跟着做了一遍
///动画函数
//element:元素
//target:最后停止的位置
function animte(element, target) {
//只有一个Timeid定时器在执行
if (element,timerId) {
clearInterval(element.timerId)
element.timerId = null
}
//定时器 每隔多少触发
element.timerId = setInterval(function ()
{
const step=6 //步进
const current=element.offsetLeft//盒子现在的位置
//如果现在位置>目标位置 则是向左移动 left为负数
if (current>target) {
step = - Math.abs(step)
}
//当快到达目标位置时则停止计时器
if (Math.abs(current-target)<=Math.abs(step)) {
//停止/
clearInterval(element.timerId)
element.style.left = target + 'px'
//退出函数
return;
}
element.style.left = (current + step) + 'px';
}, 30)
}