Featherlight — это лёгкая библиотека для создания модальных окон на сайте. Она построена поверх jQuery и минималистична по размеру, но обладает достаточной гибкостью для большинства задач. Перед использованием необходимо подключить библиотеку и её CSS-файл:
После подключения можно создавать модальные окна через вызовы
$.featherlight() или через атрибуты
data-featherlight у элементов.
afterOpenafterOpen — это один из ключевых колбэков в
Featherlight. Оно срабатывает после того, как модальное окно
полностью открылось и стало видимым на странице. Это отличное
место для выполнения действий, которые зависят от того, что окно уже
отрендерено, например:
$.featherlight('Содержимое окна', {
afterOpen: function(event){
console.log('Окно открылось!');
// this — объект Featherlight
$(this.content()).css('color', 'blue');
}
});
В этом примере afterOpen получает объект события
event и контекст this, который является
экземпляром Featherlight. Через
this.content() можно обратиться к содержимому окна.
data-featherlightОткрыть окно
Featherlight позволяет задавать колбэки через HTML-атрибуты, что упрощает организацию кода при большом количестве модальных окон.
this и
объект событияВнутри функции afterOpen объект this — это
экземпляр модального окна Featherlight. Он имеет следующие методы и
свойства:
this.content() — возвращает jQuery-объект с содержимым
окна, можно применять любые jQuery-методы, например find(),
css(), append().this.$instance — основной DOM-элемент модального
окна.this.$lightbox — обёртка, содержащая фон и окно.this.$overlay — фон под окном.event — объект события, который передается при
открытии.Пример работы с контекстом:
$.featherlight('Пример', {
afterOpen: function(event){
this.$instance.addClass('custom-lightbox');
this.content().append('Дополнительный текст
');
}
});
afterOpen особенно полезно при работе с
асинхронным контентом. Например, если нужно загрузить
данные через AJAX:
$.featherlight('Загрузка...', {
afterOpen: function(event){
var container = this.content();
$.ajax({
url: '/api/data',
method: 'GET',
success: function(data){
container.html(data);
}
});
}
});
В этом случае afterOpen гарантирует, что модальное окно
уже существует в DOM, и подставить данные можно без ошибок.
В сочетании с CSS-анимациями или jQuery-анимациями
afterOpen позволяет запускать эффекты после полной
загрузки окна, избегая визуальных артефактов. Пример с плавным
появлением:
$.featherlight('Привет!', {
afterOpen: function(event){
this.content().hide().fadeIn(500);
}
});
this.content() для изменения
содержимого, чтобы изменения были строго внутри модального окна.afterOpen вместо beforeOpen, так как DOM уже
полностью сформирован.afterOpen, иначе элементы могут
не отрендериться корректно.data-featherlight, можно назначать общий обработчик
afterOpen через глобальные опции:$.featherlight.defaults.afterOpen = function(event){
console.log('Любое окно открылось');
};
Featherlight поддерживает цепочку колбэков:
beforeOpen — перед открытием.afterOpen — после открытия.beforeClose — перед закрытием.afterClose — после закрытия.Использование afterOpen вместе с другими колбэками
обеспечивает полный контроль над жизненным циклом модального окна.
Например, можно подготовить данные в beforeOpen, а уже
визуализировать их и запускать эффекты в afterOpen.