Featherlight — это лёгкая библиотека для создания модальных окон на JavaScript и jQuery. Она отличается минимальным размером и простотой интеграции, при этом поддерживает гибкую настройку через параметры, события и цепочки методов. Основная идея заключается в создании «лёгких» модальных окон, которые можно конфигурировать как для отображения изображений, так и для произвольного HTML-контента.
Featherlight реализует концепцию цепочек методов (method chaining), которая позволяет выполнять несколько действий последовательно над одним и тем же объектом, не прерывая потока кода.
Создание модального окна происходит с помощью вызова функции
$.featherlight(). Простейший синтаксис выглядит так:
$.featherlight('<p>Пример модального окна</p>');
Можно передавать объект с настройками:
$.featherlight('<p>Пример с настройками</p>', {
closeOnClick: 'background', // закрытие при клике по фону
variant: 'wide', // дополнительный класс для кастомного стиля
afterOpen: function(event){
console.log('Окно открыто');
}
});
Ключевые параметры:
content — HTML-контент или jQuery-объект для
отображения.variant — дополнительный CSS-класс для модификации
внешнего вида окна.closeOnClick — поведение при клике по фону
(false, 'background',
'anywhere').afterOpen, beforeClose,
afterClose — хуки для выполнения кода на разных этапах
жизненного цикла модального окна.Featherlight позволяет использовать цепочку методов, что упрощает код
и делает его более читабельным. Любой экземпляр, возвращаемый
$.featherlight(), поддерживает методы:
open() — открывает модальное окно.close() — закрывает окно.toggle() — переключает состояние окна.$.featherlight.current() — возвращает текущий открытый
экземпляр.Пример последовательного вызова нескольких методов:
var modal = $.featherlight('<p>Цепочка методов</p>');
modal.open().$content.addClass('highlight');
В этом примере метод open() возвращает объект модального
окна, что позволяет сразу применять jQuery-методы к содержимому окна
через свойство $content.
Контент модального окна можно изменять динамически, используя цепочку методов:
var modal = $.featherlight('<p>Изначальный текст</p>');
modal.open()
.$content.text('Обновлённый текст')
.append('<button class="btn">Кнопка</button>');
Особенности:
$content — это jQuery-объект с текущим содержимым
модального окна.Для модальных окон важна работа с событиями. Featherlight предоставляет хуки, которые можно использовать вместе с цепочкой:
$.featherlight('<p>События</p>', {
afterOpen: function() {
this.$content.on('click', function(){
alert('Контент кликнут');
});
}
});
Хуки доступны через объект this в контексте экземпляра.
Их можно комбинировать с цепочкой:
var modal = $.featherlight('<p>Цепочка и события</p>');
modal.open()
.$content.on('mouseover', function(){
$(this).css('color', 'red');
});
Featherlight поддерживает загрузку контента по ссылке или из существующего DOM-элемента:
$.featherlight($('#hiddenContent'));
$.featherlight('https://example.com/modal.html', { type: 'ajax' });
Цепочка методов позволяет модифицировать загруженный контент после открытия:
$.featherlight('https://example.com/modal.html', { type: 'ajax' })
.open()
.$content.find('h1').css('font-size', '24px');
Дополнительно можно создавать собственные методы, расширяя прототип Featherlight. Например:
$.featherlight.prototype.changeText = function(newText){
this.$content.text(newText);
return this; // Возврат для цепочки
};
var modal = $.featherlight('<p>Тест</p>');
modal.open().changeText('Обновлённый текст через метод');
Возврат this позволяет поддерживать цепочку вызовов, что
делает интерфейс удобным для комплексных операций с модальным окном.
open(), close(), toggle() для
управления.$content.afterOpen,
beforeClose, afterClose и интегрировать их в
цепочку через this.$content.this,
чтобы цепочка оставалась непрерывной.Featherlight благодаря своей лёгкой архитектуре и поддержке цепочек методов позволяет создавать гибкие, динамические и легко модифицируемые модальные окна, интегрируемые в любой веб-проект с минимальными усилиями.