获取元素的结束位置。动画结束时的位置。在 OOP Javascript/jQuery 中

Posted

技术标签:

【中文标题】获取元素的结束位置。动画结束时的位置。在 OOP Javascript/jQuery 中【英文标题】:Get end position of element. The position when the animation is finished. In OOP Javascript/jQuery 【发布时间】:2012-12-01 10:06:25 【问题描述】:

我想得到我的对象的结束位置。所以动画完成时的顶部和左侧位置。我想在动画完成后直接获得那个位置。

我想做这个面向对象的。

这是我得到的:

(function($) 

    Block = function() 

        this.el = $('<div></div>');
        this.el.css('position', 'relative');

        

    Block.prototype.appendTo = function(parent) 

         this.el.appendTo(parent);
         return this;
    

    Block.prototype.setSize = function(w, h) 

         this.el.css('width', w); 
         this.el.css('height', h);
         return this;    
    

    Block.prototype.setPosition = function(x, y, speed) 

        speed = speed || 0;
        this.el.animate('left': x+ 'px', 'top': y+ 'px', speed);
        return this;
    

    Block.prototype.getPosition = function() 

        var left = this.el.position().left;
    var top = this.el.position().top;
    return [left, top];
    



)(jQuery);

当我用这个类和console.log创建一个块时,我得到了块起点的位置。我想获得最终位置。直接

var block1 = new Block
block1.appendTo('body')
        .setSize(100,50)
        .setPosition(200, 300, 3000);


console.log(block1.getPosition());

所以 console.log = [0, 0] 我希望它是 [200, 300]

【问题讨论】:

您为什么要这样做?只需获取动画后的位置即可。 【参考方案1】:

您可以使用data()来存储与元素相关的数据:

(function($) 
    Block = function() 
        this.el = $('<div></div>');
        this.el.css('position', 'relative');
    

    Block.prototype.appendTo = function(parent) 
         this.el.appendTo(parent);
         return this;
    

    Block.prototype.setSize = function(w, h) 
         this.el.css(width: w, height: h); 
         return this;    
    

    Block.prototype.setPosition = function(x, y, speed) 
        speed = speed || 0;
        this.el.data(top: y, left: x).animate('left': x+ 'px', 'top': y+ 'px', speed);     return this;
    

    Block.prototype.getPosition = function() 
        return [this.el.data('left'), this.el.data('top')];
    
)(jQuery);

FIDDLE

【讨论】:

【参考方案2】:

您只能在调用setPosition时存储指定的位置,然后取而代之。

Block = function() 
    this.el = $('<div></div>').css('position', 'relative');
    this.position = null;
;
Block.prototype.setPosition = function(x, y, speed) 
    this.position = 'left': x, 'top': y;
    this.el.animate(this.position, speed || 0);
    return this;
;
Block.prototype.getPosition = function() 
    var pos = this.position || this.el.position();
    return [pos.left, pos.top];
;

【讨论】:

以上是关于获取元素的结束位置。动画结束时的位置。在 OOP Javascript/jQuery 中的主要内容,如果未能解决你的问题,请参考以下文章

android循环属性动画结束后状态怎样变回原状态

如何在 CATransition 中指定开始和结束位置?

CSS 位置帮助(动画内容结束时显示的水平侧边栏)

Nasa worldwind - 地球动画结束后运行自定义函数

ue4怎么实现动画蒙太奇播放完后物体出现在动画结束时候位置

UIRefreshController 结束动画问题