zoukankan      html  css  js  c++  java
  • JS实现缓动效果-让div运动起来

    var tween = {
        linear:function(t,b,c,d){
            return c*t/d + b;
        },
        easeIn:function(t,b,c,d){
            return c * ( t /= d ) * t + b;
        },
        strongEaseIn:function(t,b,c,d){
            return c * ( t /= d ) * t * t * t * t + b;
        },
        strongEaseOut:function(t,b,c,d){
            return c * ( ( t = t / d -1 ) * t * t * t * t +1 ) + b;
        },
        sineaseIn:function(t,b,c,d){
            return c * ( t /= d ) * t * t + b;    
        },
        sineaseOut:function(t,b,c,d){
            return c * ( ( t = t / d -1 ) * t * t *t +1 ) + b;
        }
    };
    
    var Animate = function(dom){
        this.dom = dom;
        this.startTime = 0;
        this.startPos = 0;
        this.endPos = 0;
        this.propertyName = null;
        this.easing = null;
        this.duration = null;
    }
    
    Animate.prototype.start = function(propertyName,endPos,duration,easing){
        this.startTime = +new Date;
        this.startPos = this.dom.getBoundingClientRect()[propertyName];
        this.propertyName = propertyName;
        this.endPos = endPos;
        this.duration = duration;
        this.easing = tween[easing];
    
        var self = this;
        var timeId = setInterval(function(){
            if(self.step() === false){
                clearInterval(timeId);
            }
        },19);
    }
    
    Animate.prototype.step = function(){
        var t = +new Date;
        if(t>=this.startTime + this.duration){
            this.update(this.endPos);
            return false;
        }
        var pos = this.easing(t-this.startTime, this.startPos, this.endPos - this.startPos, this.duration);
        this.update(pos);
    }
    
    Animate.prototype.update = function(pos){
        this.dom.style[this.propertyName] = pos + 'px';
    }
    
    var div = document.getElementById('div');
    var animate = new Animate(div);
    animate.start('left',500,1000,'strongEaseOut');
  • 相关阅读:
    CCF CSP 201503-1 图像旋转
    CCF CSP 201403-1 相反数
    CCF CSP 201312-1 出现次数最多的数
    CCF CSP 201703-3 Markdown
    CCF CSP 201709-3 JSON查询
    CCF CSP 201709-2 公共钥匙盒
    CCF CSP 201709-1 打酱油
    CCF CSP 201604-4 游戏
    CCF CSP 201604-1 折点计数
    CCF CSP 201612-1 中间数
  • 原文地址:https://www.cnblogs.com/moqiutao/p/7124475.html
Copyright © 2011-2022 走看看