Есть ли способ получить оставшееся время анимации?

Предположим, у меня есть Div, и я использую.animate({opacity:0},400, function(){}); для своих детей. Можно ли когда-нибудь получить оставшееся время для завершения анимации? например, осталось 200 мс или 0, если анимации нет? Благодарю.

Ответы на вопрос(3)

Решение Вопроса

Чтобы помочь вам лучше понять, как вы можете использоватьstep функция [как опубликованоgdoron]
 Я создал пример, используяstep  Функция для получения оставшегося времени:

(нажмитеget state! кнопка остановки анимации и получения оставшегося времени!)

демо с расстоянием
демо с непрозрачностью

Пример расстояния jQuery:

var time = 4000;
var distance = 300;
var currentTime = 0;

$('#ball').animate({
    left: distance
}, {
    duration: time,
    step: function (now, fx) {

        currentTime = Math.round((now * time) / distance);
        var data = fx.prop + ' ' + Math.round(now) + '; <b>' + currentTime + 'ms</b> ';

        $('body').append('<p>' + data + '</p>');
    },
    easing: 'linear'
});

$('#getTime').click(function () {
    $('#ball').stop();
    $('body').prepend('<p>currentTime is:' + currentTime + ' ms; REMAINING: ' + (time - currentTime) + 'ms</p>');
});
  • You can see how I used the fx.prop inside the animation step to get the (left) property that is currently animated.
  • You can see how: knowing the animation time and the distance (opacity, whatever...) we can easily retrieve the 'stopped/paused' state by some simple math ((now*time)/distance) and thanks to the returned now value.

Слушай, не бери в головуstep Функция, о которой все говорят. Когда-то мне нужно было то, что вы делаете, и написал свое собственное, то есть, наоборот, запроектировал оставшееся время, посмотрев на общее время анимации (должно быть известно вам, так как вы однажды передали это число в jQuery), иquotient текущей и целевой непрозрачности. Затем просто умножьте этот коэффициент на общее время анимации, вычтите сумму из общего времени. Просто как тот.

Pseudo-code:

func calculate-time-left-in-a-running-fade-in-animation:
{
    var current_opacity = $elem.css('opacity');
    var target_opacity = this.getTargetOpacity();

    var total = this.getTotalAnimationTime();

    var quotient = current_opacity / target_opacity;
    return total - quotient * total;
}

Понятия не имею, зачем тебе это, ноstep может помочь вам извлечь это значение:

Step Function

The second version of .animate() provides a step option — a callback function that is fired at each step of the animation. This function is useful for enabling custom animation types or altering the animation as it is occurring. It accepts two arguments (now and fx), and this is set to the DOM element being animated.

now: the numeric value of the property being animated at each step
fx: a reference to the jQuery.fx prototype object, which contains a number of properties such as elem for the animated element, start and end for the first and last value of the animated property, respectively, and prop for the property being animated.

docs

Ваш ответ на вопрос