动画:指定速度,而不是时间

时间:2011-09-24 20:21:59

标签: jquery

我有一个带有$myElement的可拖动元素revert: true。现在指定revertDuration将确定还原动画完成所需的时间。

我的问题是动画的速度会有很大差异,具体取决于从原始位置放置$myElement的距离。

有没有办法指定动画的速度(而不是总时间)?

1 个答案:

答案 0 :(得分:0)

您需要的是position jQuery用户界面插件:http://jqueryui.com/demos/position/

您可以获得可拖动元素的偏移量。或者只是使用:

var x = $myElement.offset().left
var y = $myElement.offset().top

我想到的解决方案: 触发可拖动对象的start事件时保存元素的位置。然后在“停止”事件发生时执行相同操作并将元素animate返回到起始偏移量。偏移量的差异是一条线,其长度将与返回所需的时间成比例。

var x,y;
$myElement.draggable({
    start: function(event, ui) {
        x = $myElement.offset().left;
        y = $myElement.offset().top;
    },
    stop: function(event, ui) {
        // count the length of the line from starting point 
        // and trigger back animation 
    }
});

您可以尝试在调用stop事件时设置恢复持续时间以避免animate,但我不知道它是否在恢复动画之前完成。

$( ".selector" ).draggable( "option", "revertDuration", 1000 );