Для использования прогресс-бара в уведомлениях необходимо подключить
саму библиотеку Noty. Обычно это делается через npm или CDN. После
подключения можно создавать уведомления с помощью конструктора
new Noty(options).
new Noty({
text: 'Загрузка данных...',
type: 'info',
progressBar: true, // включение прогресс-бара
timeout: 5000
}).show();
Ключевой параметр: progressBar: true
активирует отображение полосы прогресса в нижней части уведомления. По
умолчанию прогресс-бар анимируется автоматически, уменьшаясь до нуля по
истечении времени timeout.
Noty позволяет настраивать прогресс-бар визуально через CSS. Основные возможности включают изменение цвета, толщины и позиции:
.noty_progressbar {
background-color: #3498db; /* основной цвет */
height: 4px; /* высота полосы */
}
Можно также использовать классы темы (relax,
mint, sunset) для изменения общего стиля
уведомления, включая прогресс-бар.
Noty предоставляет события, позволяющие контролировать прогресс-бар в динамике. Основные события:
onShow — срабатывает при отображении уведомления. Можно
запускать анимацию или таймер.onClose — срабатывает при закрытии уведомления,
прогресс-бар автоматически исчезает.onTimerEnd — срабатывает, когда таймер уведомления
достигает конца, то есть прогресс-бар полностью заполняется или
опустошается.Пример использования события onShow:
let n = new Noty({
text: 'Идет процесс...',
type: 'info',
progressBar: true,
timeout: false, // отключаем автоматическое закрытие
callbacks: {
onShow: function() {
let progress = 0;
let interval = setInterval(() => {
progress += 10;
this.barDom.style.width = progress + '%';
if (progress >= 100) {
clearInterval(interval);
this.close();
}
}, 500);
}
}
}).show();
В этом примере прогресс-бар обновляется вручную с шагом 10% каждые 500 мс до полного заполнения.
Noty позволяет задавать уведомления с динамическим временем
отображения, управляя прогресс-баром через timeout:
new Noty({
text: 'Файл загружается...',
type: 'success',
progressBar: true,
timeout: 3000 // 3 секунды до автоматического закрытия
}).show();
Прогресс-бар автоматически уменьшает свою ширину, синхронизируясь с таймером. При необходимости можно отключить автоматическое уменьшение и контролировать прогресс вручную.
Noty использует CSS-анимацию для плавного уменьшения прогресс-бара.
При ручном управлении анимацию можно изменить через свойство
transition в CSS:
.noty_progressbar {
transition: width 0.3s linear;
}
Это позволяет добиться более плавного или, наоборот, резкого изменения полосы прогресса в зависимости от задач уведомления.
При отображении нескольких уведомлений с прогресс-баром каждый бар управляется отдельно. Важно задавать уникальные идентификаторы, если требуется синхронизировать прогресс между уведомлениями:
let n1 = new Noty({ text: 'Загрузка 1...', progressBar: true }).show();
let n2 = new Noty({ text: 'Загрузка 2...', progressBar: true }).show();
Прогресс каждого уведомления можно контролировать независимо,
используя события и методы экземпляра Noty.
Основные методы, связанные с прогресс-баром:
show() — отображение уведомления с анимацией
прогресса.close() — немедленное закрытие уведомления и
прогресс-бара.setText(text) — обновление текста уведомления без
сброса прогресса.setTimeout(timeout) — динамическое изменение таймера и
синхронизации прогресс-бара.Эти методы позволяют создавать сложные уведомления с интерактивным прогрессом и динамическими событиями.