Velocity.js предоставляет гибкие методы управления анимациями, включая возможность остановки и паузы текущих эффектов. Эти функции необходимы для создания интерактивных интерфейсов, где элементы могут быть динамически изменяемыми под действия пользователя или системные события.
stop()Метод stop() позволяет немедленно прекратить выполнение
текущей анимации на выбранных элементах. Его использование имеет
несколько вариантов:
// Остановка всех анимаций на элементе
$("#box").velocity("stop");
// Остановка конкретной очереди
$("#box").velocity("stop", true); // true – очищает очередь
Параметры метода stop():
true, все ожидающие в очереди анимации будут удалены.true, анимация завершится мгновенно, применив конечные
стили.Пример использования с параметрами:
$("#box").velocity("stop", true, true);
В этом случае:
pause() и
resume()Velocity.js поддерживает пауза и возобновление
анимаций. Хотя прямого встроенного метода pause()
нет в базовом API, существует расширение через управление прогрессом
анимации:
var anim = $("#box").velocity({ left: "500px" }, { duration: 2000 });
// Пауза через внутренние свойства
anim.velocity("pause");
// Возобновление
anim.velocity("resume");
Для полной поддержки паузы часто используется сохранение
прогресса анимации через колбеки progress и
управление временем вручную.
var start = null;
var progress = 0;
$("#box").velocity({ left: "500px" }, {
duration: 2000,
progress: function(elements, complete, remaining, startTime, tweenValue) {
progress = complete; // сохраняем прогресс
}
});
// В момент паузы
$("#box").velocity("stop");
// Возобновление с сохранённого прогресса
$("#box").velocity({ left: "500px" }, {
duration: 2000 * (1 - progress)
});
Velocity.js использует очереди для последовательного
выполнения анимаций. Методы stop() и pause()
позволяют контролировать не только текущую анимацию, но и все
последующие:
$("#box").velocity("stop", true);
$("#box").velocity("stop", false);
$("#box").velocity("stop", false, true);
Использование этих возможностей позволяет создавать интерфейсы, где пользователь может прерывать анимации, изменять их состояние и переключаться между эффектами без визуальных сбоев.
stop() для предотвращения накопления ненужных вызовов.stop() и pause() совместимы с
Chain-выражениями, позволяя динамически изменять
анимации без повторного определения всех эффектов.$("#box")
.velocity({ left: "500px" }, { duration: 1000 })
.velocity({ top: "200px" }, { duration: 1000 });
// Через 500мс останавливаем текущую анимацию и очищаем очередь
setTimeout(function() {
$("#box").velocity("stop", true);
}, 500);
В результате анимация останавливается на промежуточном кадре, а последующая очередь удаляется, что позволяет динамически запускать новые анимации без конфликтов.
Методы остановки и паузы Velocity.js дают полный контроль над состоянием анимации и позволяют реализовать интерактивные, отзывчивые интерфейсы с минимальными усилиями.