Библиотека iziToast предоставляет встроенные
анимации для появления и исчезновения уведомлений, однако её гибкость
позволяет использовать собственные CSS-анимации, полностью контролируя
визуальное поведение уведомлений. Подход основан на указании классов
анимации через опции animateInside и
transitionIn / transitionOut.
Для задания пользовательской анимации используются следующие параметры:
transitionIn – класс CSS для анимации
появления уведомления.transitionOut – класс CSS для анимации
скрытия уведомления.animateInside – класс CSS, который
применяется к внутренним элементам уведомления (иконка, текст, кнопка
закрытия).Пример использования:
iziToast.show({
title: 'Пример',
message: 'Использование кастомной анимации',
transitionIn: 'fadeInDown',
transitionOut: 'fadeOutUp',
animateInside: 'bounce'
});
В данном примере уведомление будет появляться с эффектом fadeInDown, исчезать с fadeOutUp, а содержимое внутри — анимироваться с эффектом bounce.
Чтобы использовать свои анимации, необходимо определить их в CSS. Для этого применяются стандартные правила @keyframes и свойства animation.
Пример анимации появления:
@keyframes slideFromLeft {
0% {
transform: translateX(-100%);
opacity: 0;
}
100% {
transform: translateX(0);
opacity: 1;
}
}
@keyframes slideToRight {
0% {
transform: translateX(0);
opacity: 1;
}
100% {
transform: translateX(100%);
opacity: 0;
}
}
.custom-slide-in {
animation: slideFromLeft 0.6s ease forwards;
}
.custom-slide-out {
animation: slideToRight 0.6s ease forwards;
}
Подключение кастомной анимации в iziToast:
iziToast.show({
title: 'Кастомная анимация',
message: 'Сдвиг уведомления слева направо',
transitionIn: 'custom-slide-in',
transitionOut: 'custom-slide-out'
});
С помощью animateInside можно задавать отдельные анимации для контента уведомления, не затрагивая всю обертку. Это удобно для создания сложных эффектов, когда текст, иконка или кнопка появляются с различными временными задержками.
Пример:
@keyframes iconPop {
0% { transform: scale(0); opacity: 0; }
100% { transform: scale(1); opacity: 1; }
}
@keyframes textFadeIn {
0% { opacity: 0; }
100% { opacity: 1; }
}
.custom-icon {
animation: iconPop 0.5s ease forwards;
}
.custom-text {
animation: textFadeIn 0.8s ease forwards;
}
Подключение:
iziToast.show({
title: 'Внутренние анимации',
message: 'Иконка и текст с разными эффектами',
animateInside: 'custom-icon custom-text'
});
Важно помнить, что при использовании нескольких классов внутри
animateInside порядок классов может влиять на
последовательность анимации элементов.
Для обеспечения плавности анимаций рекомендуется:
transform и opacity, так как
они аппаратно ускоряются большинством браузеров.height или width, так
как это вызывает перерасчет макета (reflow), что замедляет работу
страницы.forwards в свойствах
animation-fill-mode, чтобы после завершения анимации
элементы сохраняли конечное состояние.Пример оптимальной анимации:
@keyframes fadeSlideUp {
0% { transform: translateY(20px); opacity: 0; }
100% { transform: translateY(0); opacity: 1; }
}
.smooth-fade-in {
animation: fadeSlideUp 0.4s ease-out forwards;
}
iziToast поддерживает параметры timeout и
progressBar, которые могут синхронизироваться с
пользовательской анимацией. Например, если уведомление должно исчезнуть
через 3 секунды, а анимация выхода длится 0.5 секунды, необходимо
правильно рассчитать timeout:
iziToast.show({
title: 'Тайминг анимации',
message: 'Уведомление исчезнет плавно через 3 секунды',
timeout: 3500, // 3000 + 500 для анимации скрытия
transitionIn: 'smooth-fade-in',
transitionOut: 'custom-slide-out'
});
Так уведомление завершает анимацию выхода до того, как полностью исчезнет с экрана.
Для расширенных эффектов можно подключать готовые CSS-библиотеки,
например Animate.css, и использовать их классы в
качестве transitionIn, transitionOut и
animateInside. Пример:
iziToast.show({
title: 'Animate.css',
message: 'Использование готовых анимаций',
transitionIn: 'animate__animated animate__zoomIn',
transitionOut: 'animate__animated animate__zoomOut',
animateInside: 'animate__animated animate__bounceIn'
});
slide-from-left, fade-pop-up) для удобства
поддержки проекта.Эта методика позволяет полностью контролировать визуальное поведение уведомлений, создавать уникальные анимационные эффекты и улучшать пользовательский интерфейс без ограничений встроенных опций iziToast.