Featherlight — лёгкая библиотека для создания модальных окон в JavaScript, которая автоматически адаптируется под разные размеры экранов. При разработке интерфейсов важно учитывать особенности мобильных устройств: ограниченный экран, сенсорное управление и возможные проблемы с производительностью. Featherlight предоставляет ряд механизмов, упрощающих работу с модальными окнами на мобильных устройствах.
По умолчанию Featherlight устанавливает размеры модального окна
автоматически, исходя из содержимого. На мобильных экранах это может
приводить к слишком большим блокам, которые выходят за пределы видимой
области. Для решения этой проблемы используется параметр
maxWidth и maxHeight, а также возможность
указания ширины и высоты в процентах от экрана:
$.featherlight('<p>Пример контента</p>', {
maxWidth: '90%',
maxHeight: '80%'
});
Особенности применения:
На маленьких экранах контент может не помещаться полностью, что требует внутреннего скроллинга. Featherlight поддерживает скроллинг через CSS:
.featherlight-content {
overflow-y: auto;
-webkit-overflow-scrolling: touch; /* плавный скролл на iOS */
}
Рекомендации:
-webkit-overflow-scrolling: touch обеспечивает
естественный инерционный скролл на устройствах Apple.Featherlight обрабатывает клики по фону и кнопке закрытия, но на
мобильных устройствах удобно добавлять поддержку свайпов. Для этого
можно подключить небольшие плагины или использовать встроенные события
touchstart и touchend:
$('.featherlight').on('touchstart', function(e) {
startY = e.originalEvent.touches[0].clientY;
});
$('.featherlight').on('touchend', function(e) {
endY = e.originalEvent.changedTouches[0].clientY;
if (endY - startY > 50) { // свайп вниз
$.featherlight.close();
}
});
Особенности работы:
Featherlight часто используется для отображения изображений или видео. На мобильных экранах критично поддерживать адаптивность:
$.featherlight('<img src="image.jpg" style="max-width: 100%; height: auto;">');
Важные моменты:
max-width: 100% предотвращает выход
изображения за границы окна.width: 100% и height: auto, чтобы сохранять
пропорции.На мобильных устройствах поворот экрана может изменять размеры окна,
поэтому полезно реагировать на событие
orientationchange:
$(window).on('orientationchange', function() {
$('.featherlight').each(function() {
$(this).featherlight('position');
});
});
Особенности:
position пересчитывает расположение окна,
сохраняя центрирование.Мобильные устройства имеют ограниченные ресурсы, поэтому Featherlight позволяет минимизировать нагрузку:
delegated
вызовы), чтобы окна создавались только при необходимости.$('body').featherlight({
delegate: '.open-lightbox',
beforeOpen: function(event) {
// подготовка контента
}
});
Использование делегирования предотвращает создание лишних элементов DOM и улучшает отзывчивость интерфейса на мобильных устройствах.
На сенсорных экранах кнопки закрытия и другие интерактивные элементы должны быть достаточно крупными:
afterContent или шаблоны.$.featherlight('<p>Контент</p>', {
afterContent: function() {
$('<button class="close-btn">Закрыть</button>')
.appendTo(this.$content)
.on('click', $.featherlight.close);
}
});
Featherlight корректно работает в большинстве современных мобильных браузеров, включая Safari на iOS и Chrome на Android. Важно учитывать следующие моменты:
position: fixed может вести себя нестабильно на
некоторых устройствах при появлении виртуальной клавиатуры.position: absolute с пересчетом позиции через метод
position() при изменении размеров окна.Featherlight предоставляет гибкие инструменты для оптимизации модальных окон под мобильные устройства, сочетая адаптивные размеры, скроллинг, сенсорные события и поддержку мультимедиа. Это делает библиотеку удобной для современных интерфейсов, где мобильная аудитория часто является приоритетной.