На мобильных устройствах пространство экрана ограничено, а взаимодействие происходит через касания, что накладывает дополнительные требования на отображение уведомлений. Библиотека Noty предоставляет гибкие механизмы позиционирования, позволяя адаптировать уведомления под разные размеры экранов и сценарии использования.
Ключевые аспекты:
Noty поддерживает стандартные позиции, применимые как для десктопа, так и для мобильных устройств:
toptopLefttopRighttopCentercentercenterLeftcenterRightbottombottomLeftbottomRightbottomCenterНа мобильных устройствах рекомендуется использовать ограниченный набор:
toptopCenterbottombottomCenterЭто связано с тем, что боковые позиции
(Left/Right) могут выглядеть некорректно из-за
узкой ширины экрана.
Пример настройки:
new Noty({
text: 'Уведомление',
layout: 'topCenter'
}).show();
Для корректного позиционирования важно учитывать текущий тип устройства. Это можно реализовать через медиазапросы или JavaScript-детекцию.
Пример адаптивного выбора позиции:
const isMobile = window.innerWidth <= 768;
new Noty({
text: 'Адаптивное уведомление',
layout: isMobile ? 'bottomCenter' : 'topRight'
}).show();
На мобильных устройствах предпочтение часто отдается нижнему
размещению (bottomCenter), так как:
Современные смартфоны имеют вырезы (notch) и закругленные углы. Это влияет на визуальное размещение уведомлений.
Для корректной работы рекомендуется учитывать CSS-переменные safe-area:
.noty_layout__topCenter {
margin-top: env(safe-area-inset-top);
}
.noty_layout__bottomCenter {
margin-bottom: env(safe-area-inset-bottom);
}
Это предотвращает наложение уведомлений на системные элементы.
По умолчанию Noty задает фиксированную ширину, которая может не подходить для мобильных экранов. Необходимо переопределить стили:
@media (max-width: 768px) {
.noty_bar {
width: calc(100% - 20px);
margin: 0 10px;
}
}
Это обеспечивает:
На мобильных устройствах одновременное отображение большого количества уведомлений ухудшает UX.
Noty позволяет ограничивать количество видимых уведомлений:
new Noty({
text: 'Сообщение',
layout: 'bottomCenter',
maxVisible: 2
}).show();
Рекомендуемые значения:
timeoutНа мобильных устройствах критично удобство закрытия уведомлений. Noty поддерживает свайпы:
new Noty({
text: 'Свайпни меня',
layout: 'bottomCenter',
closeWith: ['swipe', 'tap']
}).show();
Направление свайпа зависит от позиции:
top — свайп вверхbottom — свайп внизЭто делает взаимодействие интуитивным.
Анимации должны быть быстрыми и ненавязчивыми. Для мобильных лучше использовать простые эффекты:
new Noty({
text: 'Анимация',
layout: 'bottomCenter',
animation: {
open: 'noty_effects_slideInUp',
close: 'noty_effects_slideOutDown'
}
}).show();
Рекомендации:
Уведомления не должны мешать основным элементам интерфейса:
Подходы:
bottomCenter вместо topПример:
const isInputFocused = document.activeElement.tagName === 'INPUT';
if (!isInputFocused) {
new Noty({
text: 'Новое сообщение',
layout: 'bottomCenter'
}).show();
}
При открытии экранной клавиатуры часть интерфейса перекрывается. Уведомления внизу могут стать невидимыми.
Решение — динамическое изменение позиции:
window.addEventListener('resize', () => {
const isKeyboardOpen = window.innerHeight < 500;
new Noty({
text: 'Уведомление',
layout: isKeyboardOpen ? 'topCenter' : 'bottomCenter'
}).show();
});
Частое создание уведомлений может негативно влиять на мобильные устройства.
Рекомендации:
timeoutnew Noty({
text: 'Автозакрытие',
timeout: 2000,
layout: 'bottomCenter'
}).show();
Noty использует контейнеры для позиционирования. Их можно переопределить:
#noty_layout__bottomCenter {
bottom: 10px;
}
Это позволяет:
bottomCenter как основную позициюГрамотное позиционирование уведомлений на мобильных устройствах напрямую влияет на удобство использования интерфейса и восприятие приложения.