Velocity.js предоставляет гибкий и высокопроизводительный способ
анимации числовых свойств элементов DOM. Числовые свойства — это любые
CSS-свойства или атрибуты, которые можно выразить через числа, включая
width, height, opacity,
translateX, rotate, scale и
многие другие. Работа с ними в Velocity.js отличается простотой и
расширяемыми возможностями по сравнению с обычным CSS-анимированием.
Анимация числового свойства задаётся с помощью объекта, где ключ — это название свойства, а значение — конечное состояние анимации. Пример:
Velocity(element, {
width: "300px",
opacity: 0.5
}, {
duration: 1000,
easing: "ease-in-out"
});
В этом примере width и opacity изменяются
плавно за 1000 миллисекунд с применением кривой ускорения
ease-in-out.
Ключевые моменты:
"300px",
"50%").opacity: 0.5."+=50" или "-=20".Velocity.js позволяет задавать числовые свойства относительно текущего состояния элемента. Это особенно удобно для создания динамических эффектов без необходимости вычислять абсолютные значения:
Velocity(element, {
width: "+=50px",
height: "-=20px"
}, {
duration: 800
});
Здесь width увеличится на 50 пикселей, а
height уменьшится на 20 пикселей относительно исходных
размеров.
Особенности относительных значений:
+ и -."+=10%".Velocity.js позволяет анимировать одновременно несколько свойств с
разными параметрами. Для этого используется расширенный синтаксис, где
каждому свойству можно задать свой объект с value,
duration, easing и delay:
Velocity(element, {
width: { value: "400px", duration: 1200, easing: "ease-in" },
opacity: { value: 0.2, duration: 800, easing: "linear", delay: 200 }
});
Преимущества такого подхода:
Velocity.js умеет напрямую работать с CSS-трансформациями
(translateX, translateY, rotate,
scale). Эти свойства тоже числовые, но требуют специального
синтаксиса:
Velocity(element, {
translateX: "100px",
rotateZ: "45deg",
scale: 1.5
}, {
duration: 1000,
easing: "ease-out"
});
Особенности анимации трансформаций:
translateX: "+=50px".Velocity.js позволяет анимировать произвольные числовые свойства
через tween-функции. Это актуально для анимации данных
внутри JavaScript, не связанных напрямую с CSS:
Velocity({progress: 0}, {progress: 100}, {
duration: 1500,
progress: function(elements, percentComplete) {
console.log(percentComplete); // от 0 до 100
}
});
Преимущества кастомных числовых свойств:
progress
callback.easing для числовых свойствДля числовых свойств Velocity.js предлагает широкий набор кривых
ускорения (ease-in, ease-out,
ease-in-out, spring) и возможность задавать
кастомные функции:
Velocity(element, {
height: "500px"
}, {
duration: 1000,
easing: [ 500, 20 ] // spring: амплитуда и частота
});
Особенности:
Velocity.js предоставляет API для остановки, повторения и последовательного запуска анимаций числовых свойств:
Velocity(element, "stop"); // немедленно остановить все анимации
Velocity(element, "reverse"); // запустить анимацию в обратном направлении
Velocity(element, { width: "0px" }, { duration: 500 }); // новое значение
Особенности управления:
stop можно применять к конкретной очереди.reverse сохраняет текущее состояние числового
свойства.px, % и безразмерных значений.Velocity.js делает работу с числовыми свойствами максимально гибкой, обеспечивая плавность, контроль и точность, недостижимую стандартными CSS-транзишнами.