Я хотел бы так или иначе получить целевую непрозрачность (окончательное значение, это анимируется к) элемента, который исчезает.
Например...
$('body').fadeTo(0.4); // 0.4
$('body').fadeIn(); // 1
$('body').fadeOut(); // 0
$('body').animate({ opacity: 0.7 }); // 0.7
Действительно ли это выполнимо в jQuery?
Для некоторого фона см. мой ответ здесь на Переполнении стека. Я пытался выручить другого пользователя на ТАК и решил задать этот вопрос, который имел отношение к моему ответу.
jQuery использует пошаговые функции внутри, вы можете перезаписать функцию jQuery.fx.step.opacity
, чтобы прочитать переданный объект jQuery.fx
:
var old = jQuery.fx.step.opacity;
jQuery.fx.step.opacity = function( fx ) {
console.log(fx.elem);
console.log(fx.end);
return old(fx);
};
Функция шага непрозрачности вызывается на каждом шаге каждой анимации непрозрачности. Вероятно, вы захотите отфильтровать приведенное выше на основе fx.elem
.
fx.end
- это конечное значение анимации, fx.now
- текущее значение, а fx.start
- начальное значение. fx.unit
- единица измерения значений (в пикселях, em,% и т. Д.).
Я не думаю, что это так. У объекта нет атрибутов, которые говорят о том, куда он движется, есть только то, на чем он находится в данный момент. Jquery просто анимирует свойства CSS.
Если все остальное не поможет...
var destination = 0.4;
$('body').fadeTo(destination);
//O wow. Now we know what is fading to!