Featherlight — это легковесная библиотека для создания модальных окон на JavaScript, обеспечивающая простоту и гибкость в управлении контентом. Одним из ключевых аспектов работы с Featherlight является доступ к экземпляру модального окна после его инициализации. Этот доступ позволяет динамически управлять поведением окна, получать информацию о его состоянии и изменять настройки в процессе работы приложения.
Каждое модальное окно, созданное с помощью Featherlight,
инкапсулируется в объект Featherlight, который хранит
текущее состояние окна и ссылки на DOM-элементы. Доступ к экземпляру
осуществляется через метод
$.featherlight.current(). Этот метод
возвращает объект текущего открытого окна.
$.featherlight('#myModal'); // открытие окна
var instance = $.featherlight.current(); // получение текущего экземпляра
console.log(instance.$content); // доступ к содержимому окна
Ключевые свойства экземпляра:
$content — jQuery-объект с контентом
модального окна. Позволяет изменять HTML, добавлять события и
манипулировать содержимым динамически.$instance — корневой элемент окна
(обертка Featherlight). Используется для управления стилями, анимациями
и классами.$overlay — слой затемнения. С помощью
него можно менять прозрачность, цвета и слушать события закрытия
окна.settings — объект с настройками
текущего окна, включая кастомные параметры, переданные при
инициализации.Экземпляр Featherlight предоставляет методы, которые позволяют управлять жизненным циклом окна:
open() — открывает окно, если оно было
закрыто.close(event) — закрывает окно,
инициируя событие закрытия.resize(content) — пересчитывает
размеры окна в зависимости от контента. Полезно при динамически
загружаемом HTML или изображениях.Пример динамического изменения содержимого и размеров окна:
var instance = $.featherlight.current();
instance.$content.html('<p>Новый контент</p>');
instance.resize();
Featherlight позволяет создавать несколько окон одновременно. Для получения доступа к определенному экземпляру можно хранить ссылку на объект при создании:
var myLightbox = $.featherlight('<div>Контент</div>', {
afterOpen: function() {
console.log('Окно открыто', this);
}
});
// Позже можно закрыть окно через сохранённый экземпляр
myLightbox.close();
Отличие от current():
$.featherlight.current() возвращает только
активное окно, тогда как сохранённый экземпляр
позволяет управлять окном независимо от других открытых модалей.
Все параметры, переданные при инициализации Featherlight, доступны
через объект settings экземпляра. Это
позволяет динамически менять поведение окна после его открытия:
var instance = $.featherlight.current();
instance.settings.persist = true; // окно не удаляется при закрытии
instance.settings.closeOnClick = false; // отключение закрытия по клику вне окна
Основные параметры в settings:
targetAttr — атрибут ссылки,
содержащий селектор контента.closeIcon — HTML для иконки
закрытия.afterOpen,
afterClose,
beforeOpen,
beforeClose — коллбэки жизненного цикла
окна.Коллбэки получают экземпляр в качестве контекста (this),
что упрощает управление содержимым и поведением окна на лету.
var instance = $.featherlight.current();
instance.$content.fadeOut(200, function() {
instance.$content.html('<h2>Обновленный контент</h2>').fadeIn(200);
instance.resize();
});
var instance = $.featherlight.current();
instance.$content.find('button.save').on('click', function() {
console.log('Сохранение данных');
instance.close();
});
var instance = $.featherlight.current();
instance.$overlay.css({ backgroundColor: 'rgba(0,0,0,0.8)' });
Доступ к экземпляру Featherlight открывает полный контроль над модальными окнами: изменение содержимого, управление стилями и поведением, работа с коллбэками и настройками. Основные способы получения экземпляра:
$.featherlight.current() — получение
активного окна.Объединение этих подходов позволяет создавать сложные интерактивные интерфейсы с модальными окнами, адаптирующиеся к действиям пользователя и динамическому контенту.