Toastify — это лёгкая и гибкая библиотека для отображения уведомлений (toasts) в веб-приложениях. Она позволяет создавать консистентные уведомления, которые появляются поверх контента и автоматически исчезают через заданное время. Основная цель — поддерживать единый стиль уведомлений по всему интерфейсу, облегчая восприятие событий пользователем.
Библиотека подключается через CDN или через npm. Пример подключения через CDN:
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
Через npm:
npm install toastify-js
Подключение через модуль ES6:
import Toastify from 'toastify-js'
import "toastify-js/src/toastify.css"
Для создания простого уведомления используется метод
Toastify() с объектом конфигурации. Основные параметры:
"top" или "bottom")."left", "center", "right").Пример базового уведомления:
Toastify({
text: "Операция выполнена успешно",
duration: 3000,
gravity: "top",
position: "right",
backgroundColor: "#4CAF50"
}).showToast();
Для единообразия интерфейса важно стандартизировать цветовую гамму, размеры, положение и время отображения уведомлений. Например, положительные действия могут использовать зелёный фон, ошибки — красный, предупреждения — оранжевый.
const toastOptions = {
success: {
backgroundColor: "#4CAF50",
duration: 3000
},
error: {
backgroundColor: "#F44336",
duration: 5000
},
warning: {
backgroundColor: "#FF9800",
duration: 4000
}
};
Создание уведомлений с использованием этих настроек повышает консистентность UI:
function showToast(type, message) {
Toastify({
text: message,
duration: toastOptions[type].duration,
backgroundColor: toastOptions[type].backgroundColor,
gravity: "top",
position: "right",
close: true
}).showToast();
}
showToast("success", "Данные сохранены");
showToast("error", "Произошла ошибка при загрузке");
Toastify поддерживает плавные появления и исчезновения, что делает интерфейс более мягким. Можно настроить анимацию через CSS или использовать встроенные свойства:
Toastify({
text: "Сообщение с анимацией",
duration: 3000,
gravity: "bottom",
position: "center",
stopOnFocus: true, // Останавливает таймер при наведении
className: "toast-animated"
}).showToast();
Пример CSS для кастомной анимации:
.toast-animated {
animation: slideIn 0.5s, fadeOut 0.5s 2.5s;
}
@keyframes slideIn {
from { transform: translateY(100%); opacity: 0; }
to { transform: translateY(0); opacity: 1; }
}
@keyframes fadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
Чтобы поддерживать логическую консистентность, часто уведомления группируются по типам событий или блокам интерфейса. Можно создавать отдельные функции для уведомлений формы, уведомлений системы или действий пользователя:
const Notifications = {
form: (message) => showToast("success", message),
system: (message) => showToast("warning", message),
error: (message) => showToast("error", message)
};
Notifications.form("Форма успешно отправлена");
Notifications.system("Запуск фоновой задачи");
Notifications.error("Ошибка подключения к серверу");
Чтобы уведомления не мешали пользователю, важно учитывать:
Toastify({
text: "Обновление данных доступно",
duration: 5000,
gravity: "top",
position: "right",
close: true,
stopOnFocus: true,
ariaLive: "polite"
}).showToast();
node
вместо text для сложных уведомлений.Пример с HTML-контентом:
Toastify({
node: document.createElement("div"),
gravity: "top",
position: "right",
close: true
});
const customNode = document.createElement("div");
customNode.innerHTML = "<strong>Внимание:</strong> Новое сообщение!";
Toastify({ node: customNode }).showToast();
Для поддержания единого стиля в больших приложениях создаётся файл конфигурации уведомлений, где определяются:
Пример структуры:
export const ToastConfig = {
default: { gravity: "top", position: "right", close: true },
types: {
success: { backgroundColor: "#4CAF50", duration: 3000 },
error: { backgroundColor: "#F44336", duration: 5000 },
warning: { backgroundColor: "#FF9800", duration: 4000 }
}
};
Использование такой структуры позволяет легко изменять визуальные аспекты всех уведомлений в одном месте, обеспечивая единый и предсказуемый интерфейс.
Consistent application of Toastify обеспечивает не только визуальную гармонию, но и улучшает восприятие событий пользователем, снижает нагрузку на внимание и повышает удобство взаимодействия с интерфейсом.