Библиотека Toastify позволяет создавать уведомления с плавной анимацией, которые могут быть полностью кастомизированы с помощью CSS. По умолчанию Toastify использует встроенные стили для появления и исчезновения тостов, однако часто требуется индивидуальный стиль анимации, соответствующий дизайну проекта.
Ключевой элемент для управления анимацией — свойства
className, style и
onClick. Они дают полный контроль над визуальным
отображением и поведением уведомления.
Для начала необходимо подключить собственный CSS-файл или добавить стили в существующий. Важнейшие свойства, которые используются для анимации, включают:
opacity — управление прозрачностью уведомления.transform — масштабирование, сдвиг или вращение
тоста.transition — плавное изменение свойств во времени.Пример базового CSS для анимации появления и скрытия тоста:
.toastify-slide-in {
opacity: 0;
transform: translateY(-20px);
transition: all 0.5s ease;
}
.toastify-slide-in.show {
opacity: 1;
transform: translateY(0);
}
.toastify-slide-in.hide {
opacity: 0;
transform: translateY(-20px);
}
Здесь .show активируется при рендеринге тоста, а
.hide — при его скрытии.
При создании уведомления через Toastify можно указать кастомный
CSS-класс через опцию className:
Toastify({
text: "Уведомление с кастомной анимацией",
duration: 3000,
className: "toastify-slide-in",
close: true
}).showToast();
Важно: анимация запускается при появлении элемента в DOM. Для скрытия
используется комбинация событий onClick или
callback по окончании времени жизни тоста.
Для более сложных анимаций полезно использовать колбэки
onShow и onHide:
Toastify({
text: "Сложная анимация",
duration: 4000,
className: "toastify-slide-in",
close: true,
onShow: function(toast){
toast.classList.add("show");
},
onHide: function(toast){
toast.classList.add("hide");
}
}).showToast();
Этот подход позволяет плавно запускать анимацию через изменение
классов. Можно комбинировать с setTimeout для синхронизации
скрытия.
.toastify-zoom {
opacity: 0;
transform: scale(0.8);
transition: all 0.4s ease;
}
.toastify-zoom.show {
opacity: 1;
transform: scale(1);
}
.toastify-zoom.hide {
opacity: 0;
transform: scale(0.8);
}
.toastify-slide-left {
opacity: 0;
transform: translateX(-100%);
transition: all 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}
.toastify-slide-left.show {
opacity: 1;
transform: translateX(0);
}
.toastify-slide-left.hide {
opacity: 0;
transform: translateX(-100%);
}
Эти стили создают эффект “вылетающего” уведомления с кастомной кривой ускорения.
Для сложных последовательных эффектов лучше использовать @keyframes:
@keyframes toast-fade-in {
0% { opacity: 0; transform: translateY(-30px); }
100% { opacity: 1; transform: translateY(0); }
}
@keyframes toast-fade-out {
0% { opacity: 1; transform: translateY(0); }
100% { opacity: 0; transform: translateY(-30px); }
}
.toastify-keyframe {
animation: toast-fade-in 0.5s forwards;
}
.toastify-keyframe.hide {
animation: toast-fade-out 0.5s forwards;
}
В JavaScript добавляется переключение классов для управления последовательностью анимаций.
top/left и opacity; лучше использовать
transform + opacity.will-change: transform, opacity для
повышения производительности анимации в современных браузерах.box-shadow с анимацией, чтобы не нагружать рендеринг.animation-delay.Кастомные анимации можно сочетать с действиями пользователя, например:
Toastify({
text: "Нажмите для закрытия",
duration: -1, // тост не исчезает автоматически
className: "toastify-slide-in",
close: true,
onClick: function(toast){
toast.classList.add("hide");
setTimeout(() => toast.remove(), 500);
}
}).showToast();
Здесь уведомление исчезает по клику с плавной анимацией, а
setTimeout гарантирует удаление элемента после завершения
анимации.
Кастомные CSS-анимации в Toastify дают полный контроль над визуальной
динамикой уведомлений, позволяя создавать уникальные и плавные эффекты,
соответствующие любому стилю интерфейса. Их гибкость достигается
комбинацией классов, keyframes и колбэков для событий
показа и скрытия.