Featherlight — это минималистичная библиотека для создания модальных окон (lightbox) на JavaScript. Она ориентирована на простоту и гибкость, предоставляя удобные способы работы с модальными окнами, включая динамическое подключение контента, обработку событий и настройку анимации. Основная идея заключается в создании лёгкого интерфейса, который не требует сложной структуры HTML и легко интегрируется с существующим проектом.
Создание модального окна в Featherlight начинается с вызова функции
$.featherlight. Она принимает два основных параметра:
Пример базовой инициализации:
$.featherlight('<p>Пример содержимого модального окна</p>', {
closeOnClick: true,
closeOnEsc: true
});
Ключевые моменты:
closeOnClick — позволяет закрывать окно при клике вне
него.closeOnEsc — реагирует на нажатие клавиши Esc.Featherlight поддерживает обширную систему событий, которая позволяет отслеживать жизненный цикл модального окна. Основные события:
beforeOpen — срабатывает перед открытием окна,
используется для предварительной подготовки контента.afterOpen — выполняется после того, как окно открылось
и стало видимым.beforeClose — вызывается до закрытия, может
использоваться для анимации или проверки условий.afterClose — срабатывает после того, как окно полностью
закрыто.Пример регистрации событий:
$.featherlight('<p>Тест событий</p>', {
beforeOpen: function(event){
console.log('beforeOpen:', event);
},
afterOpen: function(event){
console.log('afterOpen:', event);
},
beforeClose: function(event){
console.log('beforeClose:', event);
},
afterClose: function(event){
console.log('afterClose:', event);
}
});
Особенности логирования:
event, который содержит
информацию о контексте вызова.this, что позволяет управлять его
состоянием.Featherlight поддерживает подгрузку контента через AJAX, что особенно
полезно для больших приложений. Для этого используется опция
ajax:
$.featherlight({
ajax: 'content.html',
beforeOpen: function(){
console.log('Контент загружается через AJAX');
},
afterOpen: function(){
console.log('Контент загружен');
}
});
Важно:
beforeOpen и afterOpen позволяют
контролировать загрузку и отображение контента.afterContent для проверки результата и логирования
проблем.Featherlight позволяет добавлять пользовательские события и функции для логирования на уровне всей страницы:
$(document).on('featherlight:open', function(event){
console.log('Глобальное событие открытия:', event);
});
$(document).on('featherlight:close', function(event){
console.log('Глобальное событие закрытия:', event);
});
Особенности:
featherlight:content и
featherlight:afterContent позволяют логировать состояние и
изменения контента.beforeOpen и
afterContent.Каждое модальное окно создаётся как отдельный экземпляр, доступный
через $.featherlight.current(). Это позволяет выполнять
логирование и отладку состояния конкретного окна:
var fl = $.featherlight('<p>Пример экземпляра</p>');
console.log('Текущий экземпляр:', $.featherlight.current());
Преимущества работы с экземплярами:
Featherlight предоставляет хуки для анимации открытия и закрытия:
beforeOpen и afterOpen — логирование
начала и завершения анимации открытия.beforeClose и afterClose — аналогично для
закрытия.Пример с анимацией и логированием:
$.featherlight('<p>Анимация и логирование</p>', {
openSpeed: 300,
closeSpeed: 200,
beforeOpen: function(){ console.log('Начало открытия'); },
afterOpen: function(){ console.log('Окно открыто'); },
beforeClose: function(){ console.log('Начало закрытия'); },
afterClose: function(){ console.log('Окно закрыто'); }
});
Выводы по логированию событий: