Библиотека iziToast предоставляет гибкие возможности для создания уведомлений в веб-приложениях. Одной из полезных функций является поддержка динамического переключения тем, что позволяет изменять визуальное оформление уведомлений в зависимости от пользовательских настроек или состояния интерфейса.
По умолчанию библиотека предоставляет две предустановленные темы:
Темы влияют на основные элементы уведомления:
background-color)color)box-shadow)Для работы с темами необходимо подключить CSS библиотеки. Обычно это выглядит так:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/izitoast/dist/css/iziToast.min.css">
<script src="https://cdn.jsdelivr.net/npm/izitoast/dist/js/iziToast.min.js"></script>
Создание уведомления с определённой темой:
iziToast.show({
title: 'Сообщение',
message: 'Это уведомление в светлой теме',
theme: 'light', // или 'dark'
position: 'topRight'
});
Ключевой момент: свойство theme
позволяет задать тему при создании каждого уведомления отдельно.
Иногда требуется менять тему в зависимости от пользовательского выбора или текущего состояния интерфейса. Для этого можно хранить глобальный параметр темы и применять его при каждом вызове iziToast:
let currentTheme = 'light';
function showNotification(title, message) {
iziToast.show({
title: title,
message: message,
theme: currentTheme,
position: 'topRight'
});
}
// Переключение темы
function toggleTheme() {
currentTheme = currentTheme === 'light' ? 'dark' : 'light';
showNotification('Тема изменена', `Новая тема: ${currentTheme}`);
}
Такой подход позволяет:
Помимо встроенных светлой и тёмной тем, iziToast позволяет создавать собственные темы с помощью CSS-перезаписи:
.iziToast.myCustomTheme {
background: linear-gradient(45deg, #4caf50, #81c784);
color: #ffffff;
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.iziToast.myCustomTheme .iziToast-close {
color: #ffffff;
}
Применение кастомной темы при уведомлении:
iziToast.show({
title: 'Кастомная тема',
message: 'Используется пользовательский стиль',
theme: 'myCustomTheme',
position: 'bottomLeft'
});
Важно: theme может быть любым строковым
идентификатором, если соответствующий CSS-класс определён.
Для удобства можно установить тему глобально через
iziToast.settings:
iziToast.settings({
theme: 'dark', // применяется ко всем последующим уведомлениям
position: 'topRight',
timeout: 5000
});
iziToast.show({
title: 'Уведомление',
message: 'Использует глобальную тёмную тему'
});
Это позволяет не указывать theme каждый
раз при создании уведомления, что особенно удобно в больших
приложениях.
iziToast не предоставляет прямого API для изменения темы уже отображённого уведомления. Однако можно удалить текущее уведомление и создать новое с другой темой:
const toastId = iziToast.show({
title: 'Исходная тема',
message: 'Светлая тема',
theme: 'light',
id: 'uniqueToast'
});
// Смена темы через секунду
setTimeout(() => {
iziToast.destroy('uniqueToast'); // удаляем старое
iziToast.show({
title: 'Новая тема',
message: 'Тёмная тема',
theme: 'dark',
id: 'uniqueToast'
});
}, 1000);
Такой подход позволяет создавать эффект перехода между темами, сохраняя идентификатор уведомления для управления им.
theme при создании уведомления или
глобально через iziToast.settings.Динамическое управление темами позволяет улучшить визуальную согласованность интерфейса и адаптировать уведомления под разные условия, включая светлые и тёмные режимы, предпочтения пользователей и состояние приложения.