Библиотека Noty предоставляет возможность гибко управлять внешним видом уведомлений через темы. Каждая тема определяет оформление всплывающих уведомлений, включая цветовую гамму, тени, рамки и анимацию элементов. Это позволяет быстро менять визуальный стиль уведомлений без необходимости вручную редактировать CSS.
new Noty({
text: 'Пример уведомления',
theme: 'mint',
type: 'alert',
timeout: 3000
}).show();
В примере выше используется тема mint. Noty поддерживает
несколько встроенных тем: relax, metroui,
mint, sunset и nest. Для
подключения сторонних тем необходимо подключить соответствующий
CSS-файл.
Чтобы использовать кастомные темы, требуется подключить CSS и, при необходимости, зарегистрировать тему в Noty:
<link rel="stylesheet" href="path/to/custom-theme.css">
После подключения можно указывать тему в параметре
theme:
new Noty({
text: 'Кастомная тема',
theme: 'customTheme',
type: 'success',
timeout: 2500
}).show();
Noty автоматически применяет классы CSS, соответствующие указанной
теме. В CSS-файле определяются правила для классов
.noty_theme_name и дочерних элементов
.noty_bar, .noty_text,
.noty_close.
Иногда требуется менять тему уведомлений во время работы
приложения. Для этого создается экземпляр уведомления с одной
темой и в процессе можно изменять её через метод
setTheme:
let myNoty = new Noty({
text: 'Динамическая тема',
theme: 'relax',
type: 'info',
timeout: 4000
});
myNoty.show();
// Смена темы через 2 секунды
setTimeout(() => {
myNoty.setTheme('mint');
}, 2000);
Метод setTheme заменяет текущую тему на новую,
автоматически подгружая соответствующие CSS-классы. Это удобно, когда
уведомления должны соответствовать изменяющемуся стилю интерфейса
(например, тёмная/светлая тема приложения).
В Noty тип уведомления (alert, success,
warning, error, info) и тема
работают совместно. Важно учитывать, что некоторые темы
содержат собственные стили для разных типов:
new Noty({
text: 'Ошибка в системе',
type: 'error',
theme: 'metroui',
timeout: 3000
}).show();
В данном примере тема metroui может изменить цветовую
палитру ошибки и иконки, делая её визуально отличной от
relax или mint.
Для крупных приложений удобно динамически определять тему в зависимости от состояния интерфейса или настроек пользователя:
function getThemeByUserPreference(pref) {
switch(pref) {
case 'light':
return 'mint';
case 'dark':
return 'sunset';
default:
return 'relax';
}
}
new Noty({
text: 'Тема выбрана динамически',
theme: getThemeByUserPreference(userTheme),
type: 'info',
timeout: 3500
}).show();
Такой подход позволяет создавать универсальные уведомления, которые будут гармонировать с текущей темой всего приложения.
Даже при использовании стандартной темы можно добавлять свои классы и стили:
new Noty({
text: '<b>Пользовательский стиль</b>',
theme: 'relax',
type: 'success',
timeout: 3000,
layout: 'topRight',
progressBar: true,
callbacks: {
onTemplate: function() {
this.barDom.classList.add('custom-noty-bar');
}
}
}).show();
Метод onTemplate позволяет получить доступ к DOM
уведомления и добавить дополнительные классы, что обеспечивает
гибкость кастомизации, сохраняя преимущества встроенной
темы.
Темы Noty могут содержать предопределенные анимации появления и
скрытия уведомлений. Для изменения анимации используется параметр
animation:
new Noty({
text: 'Анимация с темой',
theme: 'sunset',
type: 'info',
animation: {
open: 'animated bounceInRight',
close: 'animated bounceOutRight'
},
timeout: 3000
}).show();
Поддержка анимаций зависит от подключенного CSS. Комбинация темы и кастомной анимации позволяет создавать выразительные и динамичные уведомления, соответствующие дизайну приложения.
setTheme при смене режима
интерфейса.onTemplate для добавления пользовательских
стилей без изменения исходного CSS темы.