Библиотека Noty предоставляет возможность создавать уведомления с разнообразной визуальной и функциональной кастомизацией. Одним из ключевых аспектов является работа с HTML-разметкой внутри уведомлений, что позволяет отображать сложные сообщения, включая ссылки, изображения, кнопки и другие элементы интерфейса.
Для использования HTML внутри уведомлений требуется корректно подключить скрипт и стили Noty:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/noty/lib/noty.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/noty/lib/themes/mint.css" />
<script src="https://cdn.jsdelivr.net/npm/noty/lib/noty.min.js"></script>
Важно убедиться, что выбранная тема поддерживает нужное форматирование. Темы определяют не только стили уведомлений, но и их анимации и структуру DOM.
Основной параметр, отвечающий за содержание уведомления, —
text. Он может содержать как простой текст, так и HTML:
new Noty({
text: '<strong>Внимание!</strong> Вы успешно отправили форму.',
type: 'success',
theme: 'mint',
timeout: 3000
}).show();
В данном примере:
<strong> — делает текст жирным.type: 'success' задает цветовую маркировку
уведомления.timeout определяет время автоматического закрытия
уведомления.Noty поддерживает интерактивные элементы, такие как ссылки и кнопки. Они могут быть встроены прямо в HTML:
new Noty({
text: 'Для подробной информации <a href="https://example.com" target="_blank">перейдите по ссылке</a>.',
type: 'alert',
theme: 'mint',
timeout: false, // уведомление не закрывается автоматически
closeWith: ['button']
}).show();
Использование target="_blank" открывает ссылку в новой
вкладке. Параметр closeWith позволяет выбрать, какие
элементы интерфейса закрывают уведомление (кнопка, клик вне уведомления
и т.д.).
Для более сложного взаимодействия применяются Noty-кнопки, добавляемые через HTML и слушатели событий:
new Noty({
text: `
<div>
Сохранить изменения?
<button id="yes-btn">Да</button>
<button id="no-btn">Нет</button>
</div>
`,
theme: 'mint',
timeout: false
}).show();
// Подключение событий после создания уведомления
document.addEventListener('click', function(e) {
if (e.target.id === 'yes-btn') {
console.log('Изменения сохранены');
Noty.closeAll();
}
if (e.target.id === 'no-btn') {
console.log('Изменения отменены');
Noty.closeAll();
}
});
Важные моменты:
querySelector, addEventListener).timeout: false предотвращает
автоматическое закрытие, позволяя пользователю взаимодействовать с
элементами.Для индивидуального оформления можно использовать CSS:
.noty_body strong {
color: #ff5722;
font-size: 16px;
}
.noty_body a {
color: #2196f3;
text-decoration: underline;
}
Класс .noty_body применяется к основному содержимому
уведомления. Любой HTML внутри text наследует эти стили,
что позволяет гибко управлять внешним видом.
Noty позволяет включать изображения и другие медиа-элементы напрямую в текст:
new Noty({
text: '<img src="icon.png" alt="Иконка" style="width:24px;vertical-align:middle;"> Операция выполнена успешно!',
type: 'success',
theme: 'mint',
timeout: 4000
}).show();
Советы по использованию медиа:
Использование HTML внутри уведомлений требует внимания к XSS-уязвимостям. Следует:
<, >, &) или
использовать шаблонизаторы, которые автоматически обрабатывают
безопасный HTML.Можно объединять HTML-разметку с событиями Noty, такими как
onShow, onClose:
new Noty({
text: '<strong>Подтвердите действие</strong>',
type: 'alert',
theme: 'mint',
timeout: false,
buttons: [
Noty.button('Да', 'btn btn-success', function() {
console.log('Подтверждено');
this.close();
}),
Noty.button('Нет', 'btn btn-error', function() {
console.log('Отменено');
this.close();
})
]
}).show();
Такой подход сочетает визуальную гибкость HTML и встроенные средства Noty для создания полноценного интерактивного интерфейса внутри уведомления.
HTML-разметка в Noty позволяет создавать уведомления, которые полностью соответствуют требованиям интерфейса и бренда, обеспечивая как визуальную привлекательность, так и интерактивность.