Контроль над временем анимации — один из ключевых аспектов при работе с библиотекой anime.js. Параметры продолжительности и задержки позволяют точно настраивать поведение анимации, управлять ритмом интерфейса и добиваться плавных визуальных эффектов.
Параметр duration определяет, сколько времени (в
миллисекундах) длится анимация от начала до завершения.
anime({
targets: '.box',
translateX: 250,
duration: 1000
});
В данном примере анимация перемещения элемента .box
длится 1000 миллисекунд (1 секунда).
1000anime.js позволяет задавать разную продолжительность для разных свойств:
anime({
targets: '.box',
translateX: {
value: 250,
duration: 800
},
rotate: {
value: '1turn',
duration: 1500
}
});
В этом случае:
Это позволяет создавать более сложные и выразительные анимации.
duration может быть функцией, что позволяет динамически
рассчитывать длительность для каждого элемента:
anime({
targets: '.box',
translateX: 250,
duration: function(el, i) {
return 500 + i * 200;
}
});
Параметры функции:
el — текущий элементi — индекс элементаРезультат: каждый следующий элемент анимируется дольше предыдущего.
Параметр delay задаёт паузу перед началом анимации.
anime({
targets: '.box',
translateX: 250,
delay: 500
});
Анимация начнётся через 500 миллисекунд после запуска.
0Аналогично duration, задержку можно задать для
конкретных свойств:
anime({
targets: '.box',
translateX: {
value: 250,
delay: 300
},
opacity: {
value: 0,
delay: 600
}
});
Для создания каскадных эффектов часто используется функция:
anime({
targets: '.box',
translateX: 250,
delay: function(el, i) {
return i * 100;
}
});
Каждый следующий элемент начинает анимацию с задержкой на 100 мс больше предыдущего.
anime.js предоставляет удобную функцию anime.stagger для
создания последовательных задержек:
anime({
targets: '.box',
translateX: 250,
delay: anime.stagger(100)
});
Результат аналогичен предыдущему примеру, но запись компактнее.
stagger:anime({
targets: '.box',
translateX: 250,
delay: anime.stagger(100, {
start: 500
})
});
start — начальная задержка перед первым элементомОдновременное использование задержки и продолжительности позволяет точно управлять временной шкалой:
anime({
targets: '.box',
translateX: 250,
duration: 1000,
delay: 500
});
Хронология:
Если у разных свойств разные значения delay и
duration, они могут перекрываться:
anime({
targets: '.box',
translateX: {
value: 250,
duration: 1000,
delay: 0
},
rotate: {
value: '1turn',
duration: 1000,
delay: 500
}
});
anime.js поддерживает отрицательные значения delay, что
позволяет “пропустить” начальную часть анимации:
anime({
targets: '.box',
translateX: 250,
delay: -500
});
Анимация начнётся сразу, но как будто уже прошла половина времени.
При работе с несколькими анимациями важно учитывать:
delay влияет только на стартduration — на длительность выполненияdelay + durationВ timeline управление временем становится ещё гибче:
let tl = anime.timeline();
tl.add({
targets: '.box',
translateX: 250,
duration: 1000
}).add({
targets: '.box',
rotate: '1turn',
duration: 1000
}, 500);
Второй аргумент (500) — смещение относительно начала
таймлайна:
Для синхронизации нескольких элементов часто используется комбинация:
durationdelayanime({
targets: '.box',
scale: [0, 1],
duration: 600,
delay: anime.stagger(150)
});
Эффект: элементы “появляются” один за другим.
1. Короткие анимации (100–300 мс) Используются для мгновенных откликов интерфейса.
2. Средние (300–800 мс) Подходят для переходов и взаимодействий.
3. Длинные (800+ мс) Применяются для декоративных или демонстрационных эффектов.
4. Задержки стоит использовать умеренно Слишком большие задержки ухудшают восприятие интерфейса.
5. Каскадные задержки усиливают визуальную иерархию Позволяют направлять внимание пользователя.
Слишком большая длительность
duration: 5000
Анимация становится затянутой и утомительной.
Отсутствие задержки в группе элементов
delay: 0
Все элементы двигаются одновременно — теряется выразительность.
Несогласованные значения
duration: 1000,
delay: 2000
Долгое ожидание перед коротким действием может выглядеть нелогично.
Параметры duration и delay формируют
временную структуру анимации. Их грамотное сочетание позволяет:
Точное управление временем — основа качественной анимации в anime.js.