美文网首页前端JavaScript
复习笔记之API(16) JS动画补充

复习笔记之API(16) JS动画补充

作者: 晚月川 | 来源:发表于2020-04-23 09:26 被阅读0次

给动画函数添加回调函数

回调函数原理:函数可以作为一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,在执行传进去的这个函数,这个过程就叫做回调

  • 回调函数写的位置:定时器结束的位置
<style>
    div {
        position: absolute;
        width: 200px;
        height: 200px;
        background-color: black;
    }
</style>
<button class="one">跑到500的位置</button>
<button class="two">跑到1000的位置</button>
<div></div>
<script>
    let div = document.querySelector('div'),
        btn = document.querySelector('.one'),
        btn2 = document.querySelector('.two');
    function animate(obj, target, callback) {
        clearInterval(obj.timer);
        obj.timer = setInterval(function () {
            // 步长值写到定时器的里面
            let step = (target - obj.offsetLeft) / 10;
            step = step > 0 ? Math.ceil(step) : Math.floor(step);
            if (obj.offsetLeft == target) {
                // 停止动画 本质就是停止定时器
                clearInterval(obj.timer);
                // 判断回调函数是否存在
                /* if(callback){
                    // 调用函数
                    callback();
                } */
                callback && callback(); //两种写法一样,这种写法更装逼一点^-^
            }
            obj.style.left = obj.offsetLeft + step + 'px';
        }, 15);
    }
    btn.addEventListener('click', function () {
        animate(div, 500);
    })
    btn2.addEventListener('click', function () {
        animate(div, 1000, function() {
            div.style.backgroundColor = 'blue';
        });
    })
</script>

动画函数封装到单独的JS文件里

因为以后经常使用这个动画函数,可以单独封装到一个JS文件里,使用的时候调用这个JS文件即可

节流阀

防止轮播图按钮连续点击造成的播放过快

  • 节流阀的目的:上一个函数动画内容执行完毕,再去执行下一个函数动画,让事件无法连续触发
  • 核心实现思路:利用回调函数,添加一个变量来控制,锁住函数和解锁函数
    • 开始设置一个变量let flag = true
    • if(flag){flag=false; do something} 关闭水龙头
    • 利用回调函数 动画执行完毕,flag = true 打开水龙头

相关文章

  • 复习笔记之API(16) JS动画补充

    给动画函数添加回调函数 回调函数原理:函数可以作为一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完...

  • 复习笔记之API(15) JS动画

    [TOC] JS中的动画 动画实现原理 核心原理:通过定时器setInterval()不断移动盒子的位置实现步骤:...

  • Day14 - Flutter - 动画

    概述 动画API认识 动画案例练习 其它动画补充 一、动画API认识 动画实际上是我们通过某些方式(某种对象,An...

  • 复习笔记之API(1) JS组成

    JS组成 ECMAScript(JavaScript语法) DOM(页面文档对象模型) BOM(浏览器对象模型) ...

  • 复习笔记之API(14)

    立即执行函数 立即执行函数:不需要调用,立马能够自己执行的函数作用:创建一个独立作用域,立即执行函数里面所有的变量...

  • 复习笔记之API(12)

    BOM浏览器对象模型 location对象 window对象给我们提供了一个location属性用于获取或设置窗体...

  • JS补充16

    构造函数的构造原理 1.在函数体最前面隐式的加上了this={} 2.执行this.xxx=xxx; 3....

  • js学习笔记

    js学习笔记 语法 后续补充笔记 join()方法var fruits = ["Banana", "Orange"...

  • 2.14号

    总结:单词完成 js特效复习 开始看js动画 网课看了8节 计划: 单词 js动画和特效 网课 对这段时间所学进行总结

  • 数学学习参考

    1、每天做好2本册子,即复习笔记和错题集。 建议做复习笔记,课前记录自己复习的心得,然后在课上以此笔记作基础补充上...

网友评论

    本文标题:复习笔记之API(16) JS动画补充

    本文链接:https://www.haomeiwen.com/subject/nclbihtx.html