Spring-анимации в anime.js позволяют создавать движения, имитирующие физическое поведение объектов с эффектом упругости. В отличие от линейной или easing-анимации, spring-анимация создаёт более естественное движение с колебаниями, замедлением и возвратом к исходной позиции.
В anime.js spring-анимации реализуются через
свойства spring, которые задаются внутри объекта анимации.
Основные параметры spring-анимации:
anime({
targets: '.box',
translateX: 300,
spring: {
stiffness: 100,
damping: 10,
mass: 1
}
});
В этом примере .box движется к позиции
translateX: 300 с эффектом пружины. Колебания будут
зависеть от соотношения stiffness и
damping.
anime({
targets: '.circle',
translateY: 200,
spring: {
stiffness: 50,
damping: 20,
mass: 2
}
});
Эта конфигурация создаёт медленное, плавное движение с мягкими колебаниями.
Spring-анимации можно применять одновременно к нескольким CSS-свойствам или трансформациям:
anime({
targets: '.square',
translateX: 250,
translateY: 100,
scale: 1.5,
rotate: '45deg',
spring: {
stiffness: 120,
damping: 15,
mass: 1.5
}
});
Все свойства будут анимироваться с единым физическим поведением. Можно комбинировать линейные easing-анимации с spring-анимациями для достижения сложных эффектов.
Spring-анимации особенно полезны для создания интерфейсов с интерактивными элементами:
const box = document.querySelector('.draggable');
box.addEventListener('mousedown', () => {
anime({
targets: box,
scale: 1.2,
spring: {
stiffness: 200,
damping: 10
}
});
});
box.addEventListener('mouseup', () => {
anime({
targets: box,
scale: 1,
spring: {
stiffness: 150,
damping: 12
}
});
});
Такой подход создаёт ощущение живого и отзывчивого интерфейса.
anime.js позволяет включать spring-анимации в timeline для синхронизации сложных последовательностей:
const tl = anime.timeline({
duration: 800
});
tl.add({
targets: '.box1',
translateX: 300,
spring: { stiffness: 120, damping: 15 }
})
.add({
targets: '.box2',
translateY: 150,
spring: { stiffness: 100, damping: 20 },
offset: '-=400'
});
Использование offset позволяет запускать анимации
одновременно или с перекрытием, сохраняя естественное физическое
поведение.
damping выше 10.stiffness, если объект
маленький, иначе анимация будет дерганной.velocity и
mass при работе с несколькими объектами одновременно для
создания разнообразных колебаний.Spring-анимации в anime.js обеспечивают реалистичное и динамичное движение элементов, создавая эффект живой физики на веб-страницах и в интерфейсах.