Синтаксис from-to является одним из ключевых способов задания анимации в библиотеке anime.js. Он позволяет определить начальное и конечное состояние свойств анимируемого элемента, задавая плавный переход между ними. Такой подход часто используется для анимации позиций, размеров, прозрачности, поворотов и других CSS-свойств.
Базовый синтаксис выглядит следующим образом:
anime({
targets: '.element',
translateX: [0, 250],
opacity: [0, 1],
duration: 1000,
easing: 'easeInOutQuad'
});
[начальное_значение, конечное_значение].[начальное, конечное].Ключевое отличие синтаксиса from-to от обычного задания свойств заключается в явном указании начального значения, а не только конечного. Это позволяет точно контролировать стартовое состояние элементов, особенно когда их текущее состояние неизвестно или динамическое.
Можно задавать несколько свойств одновременно, каждое с собственным from-to:
anime({
targets: '.box',
translateX: [0, 300],
translateY: [0, 150],
scale: [1, 2],
rotate: [0, 360],
duration: 2000,
easing: 'easeInOutSine'
});
В этом примере элемент .box одновременно перемещается по
X и Y, увеличивается в размере и совершает полный оборот. Каждое
свойство плавно переходит из начального состояния в конечное, создавая
комплексную анимацию.
Синтаксис from-to поддерживает анимацию цветовых свойств:
anime({
targets: '.text',
color: ['#ff0000', '#0000ff'],
backgroundColor: ['#ffffff', '#000000'],
duration: 1500,
easing: 'linear'
});
Здесь .text меняет цвет текста и фон одновременно.
From-to синтаксис гарантирует точный переход между указанными цветами,
без необходимости вручную задавать промежуточные шаги.
Некоторые свойства CSS, такие как transform,
strokeDashoffset или clip-path, также можно
анимировать через from-to:
anime({
targets: '.circle',
strokeDashoffset: [anime.setDashoffset, 0],
duration: 1200,
easing: 'easeInOutQuart'
});
Функция anime.setDashoffset автоматически определяет
длину контура SVG и устанавливает начальное значение, после чего
анимация плавно сокращает линию до нуля. Такой подход удобен для
анимации графических элементов без необходимости вручную вычислять
исходные значения.
С помощью массива from-to можно создавать последовательные
анимации, используя параметр delay:
anime({
targets: '.item',
translateY: [0, 50],
opacity: [0, 1],
duration: 800,
delay: anime.stagger(200),
easing: 'easeOutCubic'
});
Каждый элемент .item начинает анимацию с задержкой, что
создает эффект каскадного появления. From-to синтаксис позволяет точно
управлять стартовыми и конечными значениями каждого элемента, сохраняя
предсказуемость анимации.
[from, to] —
стандартный вариант.value и
duration:anime({
targets: '.box',
translateX: { value: [0, 200], duration: 1000, easing: 'easeInOutQuad' }
});
Этот формат позволяет задавать индивидуальные параметры анимации для каждого свойства, включая длительность и функцию сглаживания.
anime({
targets: '.circle',
translateX: el => [0, el.offsetWidth],
duration: 1200,
easing: 'easeInOutCubic'
});
Начальное и конечное значения вычисляются динамически для каждого элемента, что удобно при работе с сетками или изменяемыми DOM-структурами.
Синтаксис from-to является фундаментальным инструментом для создания предсказуемых и мощных анимаций с anime.js, позволяя точно управлять визуальными переходами и комбинировать несколько эффектов в одном элементе.