Библиотека Toastify предоставляет простой способ отображения уведомлений на веб-странице, однако её стандартные уведомления ограничены базовыми параметрами, такими как текст, продолжительность и положение на экране. Для более гибкого интерфейса требуется создавать собственные типы уведомлений, расширяя возможности стандартного API.
Toastify позволяет модифицировать уведомления через
объект конфигурации, передаваемый в функцию Toastify().
Основные свойства для настройки:
"top" или "bottom")."left", "center", "right").Для создания собственного типа необходимо использовать комбинацию className и backgroundColor, а также расширять поведение через JavaScript.
Для реализации собственного типа уведомления удобно определять CSS-классы, которые будут определять визуальный стиль. Пример:
.toast-success {
background-color: #4CAF50;
color: white;
font-weight: bold;
border-radius: 8px;
padding: 12px 24px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.toast-error {
background-color: #F44336;
color: white;
font-weight: bold;
border-radius: 8px;
padding: 12px 24px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.toast-warning {
background-color: #FF9800;
color: white;
font-weight: bold;
border-radius: 8px;
padding: 12px 24px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
Добавление этих классов позволяет визуально различать типы уведомлений и легко их масштабировать в дальнейшем.
function showCustomToast(message, type = 'success') {
let className;
switch(type) {
case 'success':
className = 'toast-success';
break;
case 'error':
className = 'toast-error';
break;
case 'warning':
className = 'toast-warning';
break;
default:
className = '';
}
Toastify({
text: message,
duration: 4000,
gravity: 'top',
position: 'right',
className: className,
stopOnFocus: true,
close: true
}).showToast();
}
В этом примере функция showCustomToast автоматически
подбирает CSS-класс в зависимости от типа уведомления, делая вызов более
компактным и удобным.
Для повышения информативности уведомлений можно добавлять
HTML-разметку. Toastify поддерживает использование
элемента node вместо текста:
const toastNode = document.createElement("div");
toastNode.innerHTML = `
<strong>Ошибка:</strong> Неверный ввод данных
<span style="margin-left:10px;">⚠</span>
`;
Toastify({
node: toastNode,
duration: 5000,
gravity: 'bottom',
position: 'left',
className: 'toast-error',
stopOnFocus: true,
close: true
}).showToast();
Использование node позволяет включать иконки, ссылки и
любую сложную разметку без ограничения стандартным текстом.
Для собственных типов уведомлений важно учитывать обработку
пользовательских действий. Toastify предоставляет
события через опции callback и onClick.
Пример:
Toastify({
text: "Нажмите для отмены",
duration: 7000,
gravity: "top",
position: "center",
className: "toast-warning",
close: true,
onClick: () => {
console.log("Пользователь нажал на уведомление");
},
callback: () => {
console.log("Уведомление закрыто");
}
}).showToast();
Это позволяет реализовать интерактивные уведомления, которые реагируют на действия пользователя, например, отмену операции или переход на другую страницу.
transition, transform) для плавного появления
и исчезновения.role="alert" для уведомлений с важной информацией.Каждую комбинацию можно реализовать через разные CSS-классы и
передаваемые функции callback и onClick,
создавая единый, расширяемый набор уведомлений для проекта.
Создание собственных типов в Toastify позволяет:
Это делает библиотеку гибкой и подходящей для любых пользовательских интерфейсов, где требуется быстрый и информативный способ оповещения.