JS 动画笔记
动画实现原理
核心原理:通过定时器setInterval()不断地移动盒子的位置
缓动动画原理
缓动的核心算法~~~~~~~~~~(目标值-现在的位置)/10
停止的条件是~~~~~~让当前盒子的位置等于目标位置就停止定时器
匀速动画~~~~~~~~盒子当前的位置+固定值 10
缓动动画~~~~~~~~盒子当前的位置+变化的值(目标值-现在的位置)/10
动画函数添加回调函数
回调函数的原理:函数可以做为一个参数.将这个函数作为参数传递到另外一个函数里面,当那个函数执行完以后,再执行进去的函数,这个过程叫做回调;
动画函数封装到单独的JS文件里面
这样以后经常使用这个动画函数就直接调用文件就可以了
1 function animate(obj, target, callback) { 2 clearInterval(obj.timer) 3 obj.timer = setInterval(function () { 4 // 把移动值改为整数避免存在小数 5 var step = (target - obj.offsetLeft) / 10; 6 step = step > 0 ? Math.ceil(step) : Math.floor(step); 7 if (obj.offsetLeft == target) { 8 clearInterval(obj.timer) 9 // 回调函数写在定时器结束后面 10 if (callback) { 11 callback(); 12 } 13 } 14 // 把里面的移动值改为慢慢变小的值 15 obj.style.left = obj.offsetLeft + step + 'px' 16 }, 15) 17 } 18 animate(div, 700) 19 btn1.addEventListener('click', function () { 20 // 当我们不断地点击按钮就会开启越来越多的定时器 21 animate(box, 700) 22 }) 23 btn2.addEventListener('click', function () { 24 // 当我们不断地点击按钮就会开启越来越多的定时器 25 animate(box, 900, function () { 26 box.style.backgroundColor = 'red'; 27 28 }) 29 })