Featherlight — это лёгкая библиотека для создания модальных окон на JavaScript с минимальными зависимостями. Основной принцип работы заключается в динамическом создании слоя поверх страницы и управлении его содержимым через вызовы методов библиотеки.
Для начала работы необходимо подключить CSS и JS файлы Featherlight:
<link href="featherlight.min.css" rel="stylesheet">
<script src="jquery.min.js"></script>
<script src="featherlight.min.js"></script>
Базовая инициализация выполняется через вызов метода
$.featherlight() на элементе:
$('.open-lightbox').featherlight({
content: '<p>Пример содержимого</p>'
});
Ключевой момент: Featherlight автоматически создаёт контейнер и
отображает контент, управляя видимостью через классы
featherlight и featherlight-show.
Featherlight поддерживает гибкую настройку через объект options, передаваемый при инициализации. Основные параметры:
target: селектор или функция для загрузки
содержимого.variant: строка, добавляемая как CSS-класс для
кастомного стайлинга.persist: если true, окно не удаляется
после закрытия.closeOnClick: управление закрытием при клике вне окна
(true, false или
'background').beforeOpen, afterOpen,
beforeClose, afterClose: колбэки для
интеграции с пользовательской логикой.Пример с кастомизацией:
$('.open-lightbox').featherlight({
variant: 'custom-lightbox',
closeOnClick: 'background',
beforeOpen: function() {
console.log('Открытие началось');
},
afterClose: function() {
console.log('Окно закрыто');
}
});
Одной из ключевых стратегий работы с Featherlight является динамическое обновление контента без повторного инициализирования окна. Основные подходы:
$.featherlight.current()Метод $.featherlight.current() возвращает текущий
экземпляр модального окна. С его помощью можно изменять DOM внутри
окна:
var fl = $.featherlight.current();
fl.$content.html('<p>Новый контент загружен динамически</p>');
Featherlight поддерживает AJAX-контент через параметр
iframe или функцию ajax:
$('.ajax-lightbox').featherlight({
ajax: '/data/content.html'
});
Для обновления содержимого динамически можно вызвать повторно
$.featherlight.current().$content.load('/data/updated.html').
Особенность: при AJAX-подгрузке важно корректно обрабатывать состояния загрузки и ошибки.
Для больших приложений критично управлять состоянием модальных окон. Featherlight позволяет сохранять и восстанавливать данные при повторных открытых:
persist: true Контент
окна не удаляется после закрытия, что позволяет повторно использовать
существующий DOM:$('.open-lightbox').featherlight({
persist: true
});
var cachedContent = null;
$('.open-lightbox').featherlight({
beforeOpen: function() {
if(cachedContent) {
this.$content.html(cachedContent);
} else {
$.get('/data/content.html', function(data) {
cachedContent = data;
$.featherlight.current().$content.html(data);
});
}
}
});
afterOpen и
afterContent позволяют интегрировать логику динамической
подгрузки и перерисовки элементов внутри окна.Featherlight поддерживает открытие нескольких модальных окон одновременно. Рекомендуется:
$.featherlight.current() только для
последнего активного окна.var lightboxes = [];
$('.multi-lightbox').click(function() {
var fl = $.featherlight('<p>Контент окна</p>');
lightboxes.push(fl);
});
Обновление контента конкретного окна выполняется через обращение к соответствующему экземпляру массива.
$content.featherlight-show и featherlight-hide..on('click', selector, handler)), чтобы обработчики
оставались рабочими после обновления содержимого.Featherlight легко комбинируется с:
beforeOpen и afterOpen можно инициализировать
слайдеры, вкладки и календари внутри модального окна.fetch или $.ajax, обновляя
$content через $.featherlight.current().$content перед
вставкой в модальное окно.Эта стратегия обновления обеспечивает эффективное управление динамическим контентом, снижает количество повторных запросов и позволяет создавать масштабируемые интерфейсы с Featherlight.