Unpoly предоставляет гибкий механизм управления анимациями переходов между страницами и элементами интерфейса. Анимации помогают сделать интерфейс более плавным, улучшить восприятие динамических изменений и избежать резких перепрыгиваний контента. В Unpoly анимации настраиваются через классы CSS, параметры JavaScript и глобальные настройки библиотеки.
Unpoly различает несколько основных типов анимаций:
Анимация замены фрагмента (replace)
Используется при замене содержимого элемента новым фрагментом с сервера.
Классическая задача — обновление части страницы без
перезагрузки.
Анимация вставки (insert)
Применяется, когда новый фрагмент добавляется к существующему
содержимому. Поддерживает плавное появление новых элементов.
Анимация удаления (remove)
Управляет плавным исчезновением элементов из DOM.
Анимация навигации (overlay или
modal) Отдельный вид анимации для всплывающих окон и
оверлеев, с возможностью затемнения фона и плавного появления модального
окна.
Unpoly использует набор предопределённых CSS-классов, которые применяются к элементам при различных этапах анимации:
.up-enter — класс, добавляемый к элементу перед началом
анимации появления..up-enter-active — класс, активный в течение всей
анимации появления..up-leave — класс для элемента перед началом анимации
исчезновения..up-leave-active — активный класс на время анимации
удаления.Эти классы можно переопределять в CSS, используя любые свойства,
поддерживающие плавные переходы (transition) или ключевые
кадры (@keyframes). Например:
.up-enter {
opacity: 0;
transform: translateY(-10px);
}
.up-enter-active {
opacity: 1;
transform: translateY(0);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.up-leave {
opacity: 1;
}
.up-leave-active {
opacity: 0;
transform: translateY(10px);
transition: opacity 0.3s ease, transform 0.3s ease;
}
Unpoly позволяет задавать анимации динамически с помощью опций в
методах up.replace, up.insert и других:
up.replace('#content', '/new_fragment', {
animation: 'fade', // встроенная анимация
duration: 400, // длительность в миллисекундах
easing: 'ease-in-out' // функция временной кривой
});
Ключевые параметры:
animation — название анимации. Можно использовать
встроенные (fade, slide, overlay)
или собственные, зарегистрированные через CSS-классы.duration — продолжительность анимации в миллисекундах.
По умолчанию 300 мс.easing — кривые анимации (linear,
ease-in, ease-out, ease-in-out)
для плавного контроля ускорения.Unpoly позволяет задавать глобальные настройки, чтобы единообразно применять анимации по всей странице:
up.options.animation = 'fade';
up.options.duration = 350;
up.options.easing = 'ease-in-out';
Эти параметры применяются ко всем переходам, если локально не переопределены.
Дополнительно можно настроить поведение для отдельных типов действий:
up.options.animation = {
replace: 'slide-left',
insert: 'fade',
remove: 'fade-out'
};
Такое разделение позволяет, например, слайдить при смене страниц, плавно вставлять новые элементы и исчезать старым без конфликта стилей.
Unpoly предоставляет события жизненного цикла анимаций, которые позволяют выполнять действия до, во время и после анимации:
up:animating — срабатывает в начале анимации.up:animation:end — срабатывает после завершения
анимации.up:animation:cancel — срабатывает при отмене
анимации.Пример использования:
up.on('up:animation:end', function(event) {
console.log('Анимация завершена для', event.target);
});
Эти события полезны для синхронизации других эффектов, загрузки данных или повторной инициализации скриптов внутри обновлённого фрагмента.
enter и
leave.up.animation('custom-fade', {
enter: 'custom-enter',
leave: 'custom-leave'
});
up.replace, up.insert
или глобально.up.replace('#content', '/new_fragment', {
animation: 'custom-fade'
});
Такой подход позволяет полностью контролировать визуальные эффекты и интегрировать сложные переходы, включая параллакс, трансформации, масштабирование и анимацию цвета.
transform и opacity вместо
height или width для плавных GPU-ускоренных
анимаций.up:animation:end для повторной
инициализации интерактивных элементов, таких как кнопки, вкладки или
слайдеры.Unpoly обеспечивает полный контроль над анимациями на уровне CSS и JavaScript, позволяя создавать современные, отзывчивые интерфейсы с плавными переходами и высокой отзывчивостью.