你如何同时淡化和动画?

时间:2009-10-30 22:05:51

标签: jquery effects jquery-animate fadein

使用jQuery我正在创建一个基本的“工具提示”动画,以便工具提示将出现在一个小动画中,在该动画中,它会逐渐消失并垂直移动。

到目前为止,我有这个:

$('.tooltip').fadeIn('slow');
$('.tooltip').animate({ top: "-10px" }, 'slow');

以这种方式或这样做:

$('.tooltip').fadeIn('slow').animate({ top: "-10px" }, 'slow');

动画将一次运行一个,首先是淡入淡出,然后是垂直动画。有没有办法让它同时做到这两件事?

3 个答案:

答案 0 :(得分:70)

$('.tooltip').animate({ opacity: 1, top: "-10px" }, 'slow');

但是,这似乎不适用于display: none元素(如fadeIn那样)。所以,您可能需要事先说明这一点:

$('.tooltip').css('display', 'block');
$('.tooltip').animate({ opacity: 0 }, 0);

答案 1 :(得分:49)

对于仍然在几年后看的人来说,情况有所改变。您现在可以queue使用.fadeIn(),以便它可以像这样工作:

$('.tooltip').fadeIn({queue: false, duration: 'slow'});
$('.tooltip').animate({ top: "-10px" }, 'slow');

这样可以处理display: none元素,因此您不需要额外的两行代码。

答案 2 :(得分:16)

如果要单独调用它们(例如,使用不同的代码),同时动画的另一种方法是使用queue。同样,与Tinister的回答一样,你必须使用animate来实现这一点而不是fadeIn:

$('.tooltip').css('opacity', 0);
$('.tooltip').show();
...

$('.tooltip').animate({opacity: 1}, {queue: false, duration: 'slow'});
$('.tooltip').animate({ top: "-10px" }, 'slow');