Featherlight — это легковесная библиотека для создания модальных окон в браузере. Основным механизмом управления модальными окнами является инициализация через JavaScript, что позволяет гибко настраивать поведение всплывающих элементов и интегрировать их в сложные интерфейсы.
Для работы с Featherlight требуется подключение двух основных файлов: CSS и JavaScript. Обычно это выглядит так:
<link href="featherlight.min.css" rel="stylesheet">
<script src="jquery.min.js"></script>
<script src="featherlight.min.js"></script>
Важно, чтобы jQuery был подключен до Featherlight, так как библиотека полностью зависит от него.
Инициализация через JavaScript осуществляется с помощью функции
$.featherlight(). Синтаксис базового вызова:
$.featherlight(content, options);
content — содержимое модального окна. Может быть
строкой HTML, селектором DOM-элемента, jQuery-объектом или функцией,
возвращающей содержимое.options — объект настроек, позволяющий изменять
поведение окна, анимацию, закрытие и другие параметры.Пример простой инициализации с HTML-контентом:
$.featherlight('<p>Привет, мир!</p>');
Можно передавать селектор DOM-элемента, содержимое которого будет отображено в модальном окне:
$.featherlight($('#myContent'));
В этом случае содержимое элемента #myContent будет
скопировано в модальное окно. Featherlight автоматически клонирует
содержимое, сохраняя исходный элемент на странице.
Featherlight поддерживает обширный набор параметров, позволяющих тонко настраивать поведение модального окна. Основные из них:
variant — добавляет пользовательский CSS-класс к окну,
позволяя изменять стили через CSS.closeOnClick — определяет, закрывается ли окно при
клике вне него. Возможные значения: 'background',
'anywhere', false.closeOnEsc — логическое значение, указывающее, можно ли
закрыть окно с помощью клавиши Esc.openSpeed и closeSpeed — скорость анимации
открытия и закрытия (в миллисекундах или 'fast',
'slow').afterOpen, beforeClose,
afterClose — колбэки, выполняющиеся на соответствующих
этапах жизненного цикла окна.Пример использования настроек:
$.featherlight('<p>Контент с настройками</p>', {
variant: 'custom-lightbox',
closeOnClick: 'background',
closeOnEsc: true,
openSpeed: 300,
afterOpen: function() {
console.log('Модальное окно открыто');
}
});
Для одинакового поведения нескольких элементов можно использовать
селекторы и метод .featherlight() на jQuery-объекте:
$('.lightbox-trigger').featherlight({
variant: 'gallery-lightbox',
closeOnClick: 'anywhere'
});
Каждый элемент с классом lightbox-trigger при клике
будет открывать отдельное модальное окно. При этом содержимое может быть
указано через атрибут data-featherlight или передано через
опцию target.
Featherlight поддерживает динамическую загрузку контента через AJAX.
Для этого в качестве content можно указать URL, а
библиотека подгрузит HTML по указанному адресу:
$.featherlight('content.html', {
ajax: {
type: 'GET',
dataType: 'html'
},
afterOpen: function() {
console.log('Контент загружен через AJAX');
}
});
Также можно использовать функцию для динамической генерации контента:
$.featherlight(function() {
return '<p>Сгенерированный контент: ' + new Date().toLocaleTimeString() + '</p>';
});
Любое окно Featherlight, открытое через JavaScript, можно закрыть
программно с помощью метода close:
var instance = $.featherlight('<p>Закрытие через JS</p>');
// через 2 секунды закрываем окно
setTimeout(function() {
instance.close();
}, 2000);
Каждый вызов $.featherlight() возвращает объект
экземпляра, который содержит доступ ко всем внутренним
методам и параметрам. Внутри колбэков доступна переменная
this, указывающая на текущий экземпляр:
$.featherlight('<p>Контент с контекстом</p>', {
afterOpen: function() {
console.log(this.$content); // jQuery-объект с контентом окна
console.log(this.$instance); // контейнер всего модального окна
}
});
Это позволяет динамически изменять содержимое, управлять стилями или навешивать дополнительные обработчики после открытия.
Featherlight легко комбинируется с слайдерами, галереями и фреймворками. Для этого часто используется инициализация через селекторы и колбэки, где внешний контент загружается и обрабатывается уже после открытия модального окна, что обеспечивает совместимость и динамическую подгрузку.
variant для отдельной стилизации разных
окон на одной странице.instance.close()
обеспечивает гибкое управление интерфейсом.afterOpen и afterClose позволяют
интегрировать дополнительные действия без изменения внутреннего кода
библиотеки.Инициализация через JavaScript является мощным инструментом управления модальными окнами Featherlight, предоставляя полный контроль над содержимым, поведением и визуальной презентацией.