Параметр progressBar отвечает за отображение индикатора
прогресса в уведомлениях, создаваемых с помощью библиотеки
Noty. Этот индикатор визуально показывает, сколько
времени осталось до автоматического закрытия уведомления
(timeout).
По умолчанию Noty автоматически создает полоску
прогресса, если timeout задан и progressBar
включен. Полоска располагается в нижней части уведомления и постепенно
уменьшается, отражая оставшееся время.
new Noty({
text: 'Сохранение прошло успешно',
type: 'success',
timeout: 3000,
progressBar: true
}).show();
В этом примере создается уведомление с типом success,
которое автоматически закроется через 3 секунды, а полоска прогресса
будет видна и постепенно исчезать.
Ключевые моменты:
progressBar: true — включение визуального
индикатора.timeout.timeout не задан или равен false,
полоска не отображается, даже при progressBar: true.Noty предоставляет возможность контролировать визуальный стиль
прогресс-бара через CSS. Стандартно используется класс
.noty_progressbar.
Пример изменения цвета и высоты:
.noty_progressbar {
height: 4px;
background-color: #4caf50;
}
Также можно изменить положение через изменение CSS-класса уведомления:
.noty_type_success .noty_progressbar {
bottom: auto;
top: 0;
}
Теперь индикатор будет отображаться сверху уведомления вместо стандартного нижнего положения.
По умолчанию прогресс-бара не интерактивен, но его поведение можно изменить через события:
onHover — при наведении мыши на уведомление
прогресс-бара можно приостановить.onClose — прогресс автоматически завершает уведомление
при закрытии.Пример с паузой при наведении:
new Noty({
text: 'Идет загрузка...',
type: 'information',
timeout: 5000,
progressBar: true,
animation: {
open: 'animated fadeInDown',
close: 'animated fadeOutUp'
},
callbacks: {
onHover: function() {
this.stop(); // приостановка таймера
},
onHoverExit: function() {
this.resume(); // возобновление таймера
}
}
}).show();
Особенности:
this.stop() останавливает автоматическое закрытие
уведомления и прогресс-бара.this.resume() возобновляет отсчет времени и визуальное
уменьшение прогресс-бара.timeout — прогресс-бара нет без заданного времени жизни
уведомления.type — можно стилизовать разные типы уведомлений с
уникальными цветами полоски.layout — прогресс-бар адаптируется к положению
уведомления (topRight, bottomLeft и др.).theme — темы Noty могут менять стандартный вид полоски
прогресса; при необходимости можно полностью переопределять стили.Полоску можно контролировать и программно, вызывая методы экземпляра Noty:
let n = new Noty({
text: 'Обновление данных...',
timeout: 10000,
progressBar: true
}).show();
// Через 3 секунды ускорить закрытие
setTimeout(() => {
n.setTimeout(2000); // изменяем оставшееся время таймера
}, 3000);
Метод setTimeout() автоматически корректирует визуальное
отображение прогресс-бара, чтобы оно соответствовало новому времени
закрытия уведомления.
1. Прогресс-бар без автоматического закрытия:
new Noty({
text: 'Процесс выполняется...',
timeout: false,
progressBar: true
}).show();
Полоса будет отображаться, но уведомление не закроется автоматически.
Можно вручную обновлять progress через методы или
стили.
2. Пользовательский прогресс через CSS-анимацию:
@keyframes customProgress {
0% { width: 100%; }
100% { width: 0%; }
}
.noty_progressbar {
animation: customProgress 5s linear forwards;
background-color: #ff9800;
}
Применение такой анимации позволяет создавать уникальные визуальные эффекты, полностью отделенные от стандартного поведения Noty.
progressBartimeout.Понимание возможностей progressBar открывает гибкие
способы отображения временных уведомлений с динамической визуализацией
их продолжительности.