Для работы с библиотекой Toastify достаточно подключить скрипт и стили. Можно использовать CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
После этого объект Toastify становится доступен в
глобальной области видимости, и можно создавать уведомления напрямую
через Toastify({...}).showToast();.
Для проекта с модульной системой (например, через Webpack или Vite) можно установить библиотеку через npm:
npm install toastify-js
И подключить её в коде:
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
Самый базовый способ уведомления об ошибке — создание toast с текстом и красной цветовой схемой для визуального выделения:
Toastify({
text: "Ошибка при загрузке данных",
duration: 3000,
gravity: "top", // "top" или "bottom"
position: "right", // "left", "center", "right"
style: {
background: "linear-gradient(to right, #FF5F6D, #FFC371)",
color: "#fff",
fontWeight: "bold",
}
}).showToast();
Ключевые моменты:
text — текст уведомления.duration — время показа в миллисекундах. 0 означает,
что toast не исчезнет автоматически.gravity и position управляют положением на
экране.style позволяет полностью контролировать внешний вид,
включая цвет фона, текста и шрифты.Toastify предоставляет дополнительные параметры для настройки поведения сообщений:
close — отображение кнопки закрытия. Если
true, пользователь может закрыть toast вручную.stopOnFocus — при наведении курсора таймер исчезновения
останавливается.onClick — функция, которая выполняется при клике на
toast.offset — смещение уведомления относительно края
экрана.Пример с дополнительными опциями:
Toastify({
text: "Не удалось сохранить изменения",
duration: 5000,
close: true,
stopOnFocus: true,
gravity: "bottom",
position: "center",
style: {
background: "#e74c3c",
color: "#ffffff",
borderRadius: "8px",
boxShadow: "0px 4px 10px rgba(0,0,0,0.2)"
},
onClick: function() {
console.log("Toast закрыт пользователем");
}
}).showToast();
Для сообщений об ошибках часто удобно добавлять иконки или
форматированный текст. Toastify позволяет использовать HTML внутри
text:
Toastify({
node: (() => {
const div = document.createElement("div");
div.innerHTML = '<span style="margin-right:8px;">⚠</span>Сбой соединения';
return div;
})(),
duration: 4000,
gravity: "top",
position: "right",
style: {
background: "#c0392b",
color: "#fff"
}
}).showToast();
Использование node вместо text даёт полный
контроль над содержимым toast: можно вставлять изображения, ссылки или
сложные блоки HTML.
Часто нужно, чтобы все ошибки в приложении обрабатывались одинаково. Для этого можно создать вспомогательную функцию:
function showError(message) {
Toastify({
text: message,
duration: 5000,
close: true,
gravity: "top",
position: "right",
style: {
background: "#e74c3c",
color: "#fff",
fontWeight: "bold"
}
}).showToast();
}
// Пример использования
try {
// код, который может выбросить ошибку
throw new Error("Невозможно загрузить профиль пользователя");
} catch (err) {
showError(err.message);
}
Такой подход упрощает поддержку и гарантирует единый стиль уведомлений по всему проекту.
Toastify по умолчанию использует плавное появление и исчезновение, но можно управлять стилями и анимациями через CSS. Например, для создания shake-эффекта при ошибке:
.toast-shake {
animation: shake 0.5s;
}
@keyframes shake {
0% { transform: translateX(0); }
25% { transform: translateX(-5px); }
50% { transform: translateX(5px); }
75% { transform: translateX(-5px); }
100% { transform: translateX(0); }
}
И применить класс к toast:
Toastify({
text: "Ошибка сети",
duration: 4000,
className: "toast-shake",
gravity: "top",
position: "center",
style: {
background: "#e74c3c",
color: "#fff"
}
}).showToast();
Если на странице появляются несколько сообщений одновременно, важно
управлять их расположением. Параметры gravity и
position определяют общий угол экрана, а
offset позволяет задать отступы:
Toastify({
text: "Ошибка при сохранении",
gravity: "bottom",
position: "right",
offset: { x: 20, y: 50 },
duration: 4000,
style: { background: "#c0392b" }
}).showToast();
Так можно выстроить несколько toast-уведомлений, не перекрывая важный контент страницы.