Показать div в тайм-аут функции jquery

0

В моем скрипте в какой-то момент функция 'showwords', которая показывает случайные слова из массива, "пауза" или тайм-аут в течение одной секунды. В этой паузе я хочу, чтобы мой белый ящик отображался - точно в течение одной секунды. Я сделал это, и это "хорошо", но я хочу, чтобы это было быстрее. Есть ли более умный способ сделать это?

setTimeout(showswords, 1000);
$("#whitebox").fadeIn("fast").delay(1000).fadeOut("fast");
  • 0
    Можете ли вы добавить JSFiddle из того, что вы сделали
  • 0
    Быстрее = изменить задержку?
Теги:
settimeout

2 ответа

0

Что вы на самом деле хотите сделать здесь? #whitebox в #whitebox и через некоторое время снова исчезают #whitebox? setTimeout может быть ненужным в зависимости от того, что вы пытаетесь сделать. Однако...

Если вы играете с интервалом времени ожидания и продолжительностью анимации, вы должны быть способны достичь того, чего хотите; в основном setTimeout позволит вам отсрочить вызов функции (например, showswords()) до тех пор, пока не пройдет определенный промежуток времени (в вашем примере 1000 мс).

Когда showswords() выполняется, вы можете затем исчезать в поле #whitebox с задержкой, какой бы длинной вы ни хотели, метод .fadeIn() принимает аргумент, duration с которой вы можете определить, как долго будет выполняться анимация, вместо этого времени прохождения в качестве части опций метода, вы можете указать скорость в миллисекундах, чтобы:

setTimeout(function() {
  $("#whitebox")
    .fadeIn(400)  // duration, in ms
    .promise
    .done(function(){
      $("#whitebox").fadeOut(400); // duration, in ms
    });
}), 1000);

... будет исчезать в #whitebox через 400 мс, и когда анимация будет завершена, она погаснет обратно за такой же промежуток времени. Это будет выполняться примерно через одну секунду после выполнения команды setTimeout.

Вместо использования обещаний вы можете предоставить второй аргумент функции .fadeIn() и использовать его как метод "сделанного" обратного вызова.

0

Вы можете указать скорость в миллисекундах эффектов fadein/fadeout. Для более быстрого/плавного эффекта попробуйте выполнить следующее:

$("#whitebox").fadeIn(350, function(){
   $(this).delay(500).fadeOut(350);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню