В библиотеке Velocity.js анимации выполняются через
функцию Velocity, которая сочетает в себе простоту jQuery и
высокую производительность CSS-анимаций. Синтаксис функции гибкий и
позволяет управлять практически всеми аспектами анимации: свойствами,
временем, кривыми движения и колбэками.
Velocity(element, properties, options);
element — DOM-элемент или коллекция элементов, к
которым применяется анимация. Может быть передан как одиночный элемент,
массив или NodeList.properties — объект CSS-свойств и значений, к которым
следует анимировать элемент. Например:{
opacity: 0.5,
width: "300px",
translateX: "100px"
}
options — объект с дополнительными настройками
анимации: длительность, задержка, easing, колбэки и другие
параметры.Базовая анимация с изменением прозрачности:
Velocity(document.getElementById("box"), { opacity: 0.5 }, { duration: 1000 });
Анимация с изменением нескольких свойств:
Velocity(
document.querySelectorAll(".item"),
{
width: "200px",
height: "100px",
rotateZ: "45deg"
},
{ duration: 800, easing: "ease-in-out" }
);
Ключевые параметры объекта options:
easeIn, easeOut, spring.true для бесконечного повторения.Пример с колбэками:
Velocity(
"#circle",
{ scale: 1.5, opacity: 0.7 },
{
duration: 1200,
easing: "spring",
begin: function() {
console.log("Анимация началась");
},
complete: function() {
console.log("Анимация завершена");
}
}
);
Velocity.js поддерживает последовательные вызовы анимаций через массив объектов. Каждая анимация запускается после завершения предыдущей.
Velocity("#box", [
{ opacity: 0.5, duration: 500 },
{ translateX: "100px", duration: 700 },
{ rotateZ: "90deg", duration: 600 }
]);
Также можно комбинировать с функцией then для управления
цепочками:
Velocity("#box", { opacity: 0.3 }, { duration: 400 })
.then({ translateY: "50px" }, { duration: 600 })
.then({ scale: 1.2 }, { duration: 500 });
Velocity(document.querySelectorAll(".item"), { opacity: 0 }, { duration: 500 });
Velocity.js умеет анимировать практически любые CSS-свойства, включая
числовые значения (width, height,
opacity), цвета (backgroundColor,
color) и трансформации (translateX,
translateY, rotateZ, scale).
Пример комбинированной трансформации:
Velocity("#square",
{ translateX: "200px", rotateZ: "45deg", scale: 1.5 },
{ duration: 1000, easing: "easeInOutQuad" }
);
+= или
-= для анимации относительно текущего состояния:Velocity("#box", { left: "+=50px" }, { duration: 600 });
Velocity возвращает объект с поддержкой промисов, что позволяет
использовать современный синтаксис async/await:
async function animateBox() {
await Velocity("#box", { opacity: 0.5 }, { duration: 500 }).promise();
await Velocity("#box", { translateY: "100px" }, { duration: 700 }).promise();
}
animateBox();
Помимо базового вызова
Velocity(element, properties, options), есть
вспомогательные команды:
Velocity("#box", "stop");
Velocity("#box", "reverse");
Velocity("#box", "finish");
Эти команды делают Velocity гибкой и мощной библиотекой для создания сложных анимаций с минимальным кодом.