Библиотека Noty предоставляет встроенные механизмы для создания уведомлений, которые могут сопровождаться наложением затемнения (overlay). Это позволяет привлекать внимание пользователя к конкретному сообщению, блокируя взаимодействие с остальной частью интерфейса до закрытия уведомления.
Для активации затемнения необходимо использовать параметр
modal. При установке его в true уведомление
автоматически добавляет полупрозрачный фон, блокирующий элементы
страницы:
new Noty({
text: 'Произошла критическая ошибка!',
type: 'error',
modal: true,
timeout: false, // Уведомление не закроется автоматически
}).show();
Ключевые моменты:
modal: true — включает наложение затемнения.timeout: false — уведомление останется на экране до
закрытия пользователем.Noty позволяет кастомизировать overlay с помощью CSS. По умолчанию
затемнение имеет класс .noty_modal. Чтобы изменить
прозрачность или цвет, достаточно определить собственные стили:
.noty_modal {
background-color: rgba(0, 0, 0, 0.7); /* Более темный фон */
z-index: 10000; /* Поверх других элементов */
}
Можно изменять любые параметры: цвет, прозрачность, анимацию появления, границы и т.д. Это позволяет интегрировать затемнение в дизайн интерфейса.
В некоторых случаях требуется показывать уведомление с затемнением
только при определенных условиях. Для этого можно динамически изменять
параметр modal при создании уведомления или использовать
методы show() и close():
let notification = new Noty({
text: 'Подтвердите действие',
type: 'alert',
modal: false,
buttons: [
Noty.button('Да', 'btn btn-success', function () {
notification.close();
}),
Noty.button('Нет', 'btn btn-error', function () {
notification.close();
})
]
});
// Включение затемнения перед показом
notification.setModal(true);
notification.show();
Метод setModal(true) динамически включает overlay, что
полезно для уведомлений с интерактивными кнопками или формами.
Noty поддерживает анимации появления уведомлений вместе с наложением
затемнения. Параметры animation позволяют задавать эффекты
для входа и выхода:
new Noty({
text: 'Сохранение данных...',
type: 'information',
modal: true,
animation: {
open: 'animated fadeInDown', // библиотека Animate.css
close: 'animated fadeOutUp'
},
timeout: 3000
}).show();
При этом overlay синхронизирован с анимацией, плавно появляется и исчезает вместе с уведомлением, создавая единый визуальный эффект.
При необходимости отображать несколько уведомлений одновременно следует учитывать, что overlay блокирует взаимодействие. Для корректной работы можно использовать один главный overlay и добавлять новые уведомления поверх него, либо закрывать предыдущее уведомление перед открытием следующего:
let firstNoty = new Noty({
text: 'Первое уведомление',
modal: true,
timeout: false
}).show();
let secondNoty = new Noty({
text: 'Второе уведомление',
modal: true,
timeout: false
});
// Закрытие предыдущего перед показом нового
firstNoty.on('onClose', function () {
secondNoty.show();
});
Это предотвращает наложение нескольких overlay и сохраняет удобство использования интерфейса.
Noty предоставляет события, связанные с жизненным циклом уведомления. Для работы с overlay можно использовать следующие события:
onShow — срабатывает при показе уведомления, overlay
становится видимым.onClose — срабатывает при закрытии уведомления, overlay
скрывается.onClick — может использоваться для обработки клика по
overlay, если требуется закрывать уведомление при клике вне его
области.Пример закрытия уведомления по клику на overlay:
new Noty({
text: 'Нажмите на фон, чтобы закрыть',
modal: true,
timeout: false,
callbacks: {
onClick: function () {
this.close();
}
}
}).show();
Эти подходы позволяют полноценно использовать возможности Noty для создания уведомлений с наложением затемнения, обеспечивая удобство взаимодействия и высокий уровень визуальной выразительности.