• 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');
  • 相关阅读:
    RTT设备与驱动之串口
    RTT设备与驱动之PIN设备
    RTT之ENV
    MQTT学习之一
    思维导图软件
    英语单词学习方法
    RTT之POSIX
    10 个强大的JavaScript / jQuery 模板引擎推荐
    30个实用的jQuery选项卡/导航教程推荐
    jquery 自动完成 Autocomplete插件汇总
  • 原文地址:https://www.cnblogs.com/moqiutao/p/7124475.html
Copyright © 2020-2023  润新知