缓动框架

缓动框架

在body中创建一个按钮

    <button>运动到400</buttton>
    <div></div>

设置样式

    <style>
    div{
       position: absolute;
        left:40px;
        top:40px;
        width: 100px;
        height: 100px;
        background-color: pink;
    }
    </style>

程序运行起来的时候书写算法

    window.onload = function () {
    <!--分三步-->
    <!--1.获取事件源-->
    <!--获取标签-->
    var button = document.getElementsByTagName("button")[0];
    var div = document.getElementsByTagName("div")[0];
    <!--2.绑定事件-->
    button.onclick = function () {
    <!--3,书写事件-->
     var json1 = {"left":300,"top":200,"width":300,"height":200};
        var json2 = {"left":40,"top":40,"width":100,"height":100};
        
        <!--封装方法-->
    <!--传事件源,json串,需要循环的方法-->
        animate(div,json1,function(){
            animate(div,json2,function(){
            <!--可以取实现方法,也可以不去实现-->
            });
        });     
    }

    
    function animate(ele,json,fn){
        <!--首先清空定时器-->
        clearInterval(ele.timer);
        ele.timer = setInterval(function () {
           // 开闭原则
            var bool = true;
                    <!--获取步长-->
        for(var k in json){
            var leader = parseInt(getStyle(ele,k))||0
            var step = (json[k] - leader)/10;
            step = step>0 ? Math.ceil(step):Math.floor(step);
            
            leader = leader + step;
            
            <!--赋值-->
            ele.style[k] = leader + "px";
            if(json[k] != leader){
                 bool = false;
            }
        }
              if (bool){
                clearInterval(ele.timer);
                if (fn){
                    fn();
                }

            }
        },25);
        
        //适配浏览器
         function getStyle(ele,attr) {
            if (window.getComputedStyle){
                return window.getComputedStyle(ele,null)[attr];
            }
            return ele.currentStyle[attr];
        }
        
        }
    
    }

运行之后的效果


Untitled2.gif
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,332评论 19 139
  • 封装框架遇到的两个问题 原有的方法:div .style .width:这个方法比较固定,不能用变量或者字符串的形...
    嗨黄先生阅读 283评论 0 0
  • 我们被告知这个世界在我们看到它之前。我们想象大多数事情之前,我们经历他们。和这些成见,除非教育使我们敏锐的意识到,...
    王钰榕阅读 162评论 0 1
  • 1.不懂言简意赅 女人在职场中说话容易过多,导致重点不突出,欠缺张力。其实简练才是真正的丰富,只有最简单的东西才具...
    流年飞萤阅读 898评论 0 5
  • 操作代码单元格 在这个 notebook 中,你将尝试操作代码单元格。 首先,运行以下代码单元格。就像之前我所提到...
    KennyP0618阅读 3,151评论 0 0

友情链接更多精彩内容