Как вы увядаете и оживляете одновременно? - PullRequest
51 голосов
/ 31 октября 2009

Используя jQuery, я создаю базовую анимацию «всплывающей подсказки», чтобы подсказка появлялась в виде небольшой анимации, в которой она исчезала, а также перемещалась по вертикали.

Пока у меня есть это:

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

Так или иначе:

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

Анимации будут запускаться по одной, сначала постепенно, а затем по вертикали. Есть ли способ сделать это одновременно?

Ответы [ 3 ]

70 голосов
/ 31 октября 2009
$('.tooltip').animate({ opacity: 1, top: "-10px" }, 'slow');

Однако, это не работает на display: none элементах (как fadeIn). Таким образом, вам может потребоваться указать это заранее:

$('.tooltip').css('display', 'block');
$('.tooltip').animate({ opacity: 0 }, 0);
49 голосов
/ 07 января 2014

Для людей, которые все еще ищут пару лет спустя, вещи немного изменились. Теперь вы можете использовать queue для .fadeIn(), чтобы он работал следующим образом:

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

Это дает преимущество работы с display: none элементами, поэтому вам не нужны дополнительные две строки кода.

16 голосов
/ 31 октября 2009

Другой способ сделать одновременные анимации, если вы хотите вызывать их отдельно (например, из другого кода), это использовать queue. Опять же, как и в случае с ответом Тинистера, для этого вам придется использовать animate, а не fadeIn:

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

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