Система уведомлений Noty предоставляет гибкий механизм управления анимациями появления и исчезновения сообщений. Скорость анимации напрямую влияет на восприятие интерфейса: слишком быстрые уведомления могут остаться незамеченными, слишком медленные — раздражать пользователя.
В основе лежит настройка параметров animation.open и
animation.close, которые определяют, как именно уведомление
появляется и скрывается, включая длительность анимации.
Анимации в Noty задаются через объект animation:
new Noty({
text: 'Сообщение',
animation: {
open: 'noty_effects_open',
close: 'noty_effects_close'
}
}).show();
Здесь используются CSS-классы, которые отвечают за визуальные
эффекты. Скорость определяется внутри этих классов — чаще всего через
CSS-свойства animation-duration или
transition-duration.
Основной способ контроля скорости — изменение длительности анимации в CSS:
.noty_effects_open {
animation: fadeIn 0.5s ease;
}
.noty_effects_close {
animation: fadeOut 0.3s ease;
}
Ключевые моменты:
0.5s — время появления0.3s — время исчезновения300ms)Noty часто применяется совместно с библиотекой animate.css:
new Noty({
text: 'Анимация',
animation: {
open: 'animate__animated animate__fadeInDown',
close: 'animate__animated animate__fadeOutUp'
}
}).show();
Скорость в этом случае регулируется через CSS-переменные или переопределение классов:
.animate__animated {
animation-duration: 0.4s;
}
Либо более точечно:
.animate__fadeInDown {
animation-duration: 0.6s;
}
В ряде случаев требуется изменять скорость в зависимости от контекста:
function createNotification(speed) {
return new Noty({
text: 'Динамическая скорость',
animation: {
open: `animated fadeIn`,
close: `animated fadeOut`
},
callbacks: {
onShow: function() {
this.barDom.style.animationDuration = speed + 'ms';
}
}
});
}
Такой подход позволяет:
Скорость анимации должна согласовываться с параметром
timeout:
new Noty({
text: 'Автозакрытие',
timeout: 2000,
animation: {
open: 'fadeIn',
close: 'fadeOut'
}
}).show();
Если:
то фактически пользователь видит уведомление только 1 секунду.
Практическое правило:
Для максимальной скорости (мгновенного отображения) анимацию можно отключить:
new Noty({
text: 'Без анимации',
animation: {
open: null,
close: null
}
}).show();
Или через CSS:
.noty_bar {
animation: none !important;
transition: none !important;
}
Это полезно:
Иногда вместо animation применяются CSS-переходы:
.noty_bar {
transition: transform 0.4s ease, opacity 0.4s ease;
}
Преимущества:
Скорость анимации влияет не только на UX, но и на производительность:
Быстрые анимации:
Медленные анимации:
Рекомендуется:
transform и opacitywidth, height,
top, leftПрактика показывает следующие диапазоны:
| Тип уведомления | Время появления | Время скрытия |
|---|---|---|
| Информационное | 300–500 ms | 200–400 ms |
| Ошибка | 400–700 ms | 300–500 ms |
| Успешное действие | 250–400 ms | 200–300 ms |
| Системное уведомление | 0–200 ms | 0–200 ms |
Скорость воспринимается не только через длительность, но и через функцию сглаживания:
.noty_effects_open {
animation: fadeIn 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}
Популярные варианты:
ease — стандартease-in — медленный стартease-out — плавное завершениеcubic-bezier — полный контрольАнимации зависят от позиции уведомления:
new Noty({
layout: 'topRight',
animation: {
open: 'slideInRight',
close: 'slideOutRight'
}
}).show();
Особенности:
1. Слишком длинные анимации
animation-duration: 2s;
Вызывают раздражение и задержку взаимодействия.
2. Несогласованность open/close
3. Игнорирование timeout
4. Анимация layout-свойств
new Noty({
text: 'Сбалансированная анимация',
timeout: 3000,
animation: {
open: 'custom-open',
close: 'custom-close'
}
}).show();
.custom-open {
animation: fadeInDown 0.4s ease-out;
}
.custom-close {
animation: fadeOutUp 0.3s ease-in;
}
Такой вариант обеспечивает:
Скорость анимации — часть общей стратегии интерфейса:
Грамотно настроенные анимации в Noty делают уведомления незаметными с точки зрения механики, но эффективными с точки зрения передачи информации.