js 原生封装的简单动画

/**
* Created by luodianlei on 2018/5/12.
*/
//要封装一个函数.这个函数,既可以从左到右,也可以从右到左


// 第一个参数: 要操作的元素
// 第二个参数: 目标位置
// 第三个参数: 步数
// 第四个参数: 到达目标之后调用的函数

function animate( ele, target, step, time, fn){
//防止注册多个定时器
if(ele.timeid){
clearInterval(ele.timeid);
}
// 1. 让元素缓慢移动
ele.timeid = setInterval( function(){
// 2. 获取当前的位置
var current = ele.offsetLeft;
// 3. 判断是从左往右还是从右往左
if(target - current > 0){
// 从左往右
var final = current + step;
} else{
//从右往左
var final = current - step;
}
// 4. 让元素动起来
ele.style.left = final + 'px';
// 5. 判断是否到底目标位置
// 如何判断到达目标位置
// Math.abs(目标位置 - 当前位置的差值) < step 就证明要到达目标位置了
if( Math. abs(target - final) < step){
ele.style.left = target + 'px';
clearInterval(ele.timeid);
//如果fn被赋值,就要调用,如果fn不赋值就不调用
if(( typeof fn) === 'function'){
fn();
} else{
// 证明传入进来的不是函数
//报错,提示用户,传进来的不是函数
// throw // 抛出去
// 创建一个错误
// new Error('语法错误:第四个参数必须是函数');
throw new Error( '语法错误:第四个参数必须是函数');
}
}
}, time);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值