Velocity.js — это библиотека для создания высокопроизводительных
анимаций в JavaScript, которая сочетает в себе гибкость jQuery-анимаций
с ускорением через requestAnimationFrame. В отличие от
CSS-анимаций, Velocity.js позволяет контролировать каждое свойство
объекта в реальном времени и обеспечивает синхронизацию сложных
последовательностей.
Для использования Velocity.js необходимо подключить библиотеку к
проекту. После этого основной метод Velocity применяется к
DOM-элементу следующим образом:
Velocity(element, {
properties: {
translateX: "100px",
opacity: 0.5
},
options: {
duration: 1000,
easing: "ease-in-out",
complete: function() {
console.log("Анимация завершена");
}
}
});
Ключевые моменты синтаксиса:
duration), функция сглаживания (easing) и
callback после завершения (complete).Velocity.js позволяет задавать как абсолютные значения
(100px), так и относительные ("+=50px") для
более динамичных анимаций.
Velocity.js поддерживает большинство CSS-свойств, включая трансформации и прозрачность. Пример перемещения и изменения прозрачности:
Velocity(document.getElementById("box"), {
translateX: "200px",
translateY: "50px",
opacity: 0.3
}, {
duration: 1200,
easing: "easeOutQuart"
});
Особенности работы с трансформациями:
translate3d
для плавных анимаций.Одно из мощных преимуществ Velocity.js — возможность
последовательного запуска нескольких анимаций с использованием
Promises или метода then:
Velocity(box, { opacity: 0.5 }, { duration: 500 })
.then(() => Velocity(box, { translateX: "100px" }, { duration: 500 }))
.then(() => Velocity(box, { scale: 1.5 }, { duration: 500 }));
Преимущества цепочек:
setTimeout.Velocity.js поддерживает стандартные кривые анимации
(linear, ease-in, ease-out) и
расширенные варианты (easeInQuart,
easeOutBounce). Длительность анимации задаётся в
миллисекундах и может быть динамической:
Velocity(element, { opacity: 1 }, {
duration: 800,
easing: "easeOutElastic"
});
Советы по выбору easing:
easeIn/easeOut.spring,
easeOutBounce.[0.25, 0.1, 0.25, 1] для точного контроля.Повторение анимации осуществляется с помощью параметра
loop. Можно задать количество циклов или бесконечный
цикл:
Velocity(box, { rotateZ: "360deg" }, { duration: 1000, loop: 3 });
Velocity(box, { translateY: "50px" }, { duration: 500, loop: true });
loop: true — бесконечное повторение.loop: n — повторение n раз.Velocity.js предоставляет методы для управления уже запущенными анимациями:
Velocity(element, "pause"); // приостановка
Velocity(element, "resume"); // возобновление
Velocity(element, "stop"); // остановка и сброс
Velocity(element, "finish"); // завершение всех анимаций
Применение:
Появление элемента с масштабированием:
Velocity(box, { opacity: 1, scale: 1 }, { duration: 600, easing: "easeOutBack" });
Сложная последовательность:
Velocity(box, { translateY: "-50px", opacity: 0 }, { duration: 400 })
.then(() => Velocity(box, { translateY: "0px", opacity: 1 }, { duration: 400 }));
Анимация нескольких элементов одновременно:
Velocity(document.querySelectorAll(".item"), { translateX: "50px" }, { duration: 700, stagger: 100 });
stagger добавляет задержку между элементами, создавая
эффект «волны».Velocity.js обеспечивает полный контроль над анимацией: от простых движений и прозрачности до сложных цепочек с физикой и интерактивными эффектами. Библиотека совместима с современными браузерами и оптимизирована для высокой производительности, позволяя создавать динамичные интерфейсы без использования CSS-анимаций.