Featherlight — это минималистичная библиотека для создания модальных окон в JavaScript, ориентированная на легкость и простоту интеграции. Одним из ключевых способов использования является работа с inline-контентом, когда содержимое модального окна уже присутствует на странице в скрытом виде и не требует дополнительной загрузки с сервера. Такой подход особенно удобен для быстрого отображения текстовых блоков, форм или небольших элементов интерфейса.
Inline-контент представляет собой обычные HTML-элементы, которые
изначально скрыты на странице с помощью CSS. Наиболее часто для этого
используют свойство display: none:
<div id="inline-content" style="display: none;">
<h2>Информация о продукте</h2>
<p>Это описание отображается внутри модального окна при клике на ссылку.</p>
<button id="close-btn">Закрыть</button>
</div>
<a href="#inline-content" data-featherlight="inline">Показать описание</a>
Ключевой момент: ссылка с атрибутом href должна
указывать на идентификатор блока, который будет использоваться
как контент для модального окна. Атрибут
data-featherlight="inline" сообщает библиотеке, что
открываться будет inline-контент.
Featherlight автоматически определяет элементы с атрибутом
data-featherlight. Однако можно создать модальное окно
программно:
$('#inline-content').featherlight({
type: 'inline'
});
В этом случае вызов привязывается к конкретному элементу, а
type: 'inline' гарантирует, что Featherlight будет
использовать именно inline-контент.
Featherlight позволяет настраивать inline-модальные окна через параметры. Основные из них:
Пример с кастомной кнопкой закрытия и обработкой событий:
$.featherlight('#inline-content', {
closeIcon: '✖',
afterOpen: function(event){
console.log('Модальное окно открыто');
},
afterClose: function(event){
console.log('Модальное окно закрыто');
},
variant: 'custom-lightbox'
});
Хотя inline-контент заранее присутствует в DOM, его можно изменять перед открытием модального окна. Это удобно для форм, где значения должны обновляться динамически:
$('#open-modal').on('click', function() {
$('#inline-content p').text('Динамически обновленный текст');
$.featherlight('#inline-content');
});
Featherlight копирует содержимое элемента, чтобы не нарушать структуру страницы. Это значит, что исходный блок остаётся на месте и может использоваться повторно.
Featherlight использует простую HTML-структуру: основной контейнер
.featherlight и внутренний блок
.featherlight-content. Для inline-контента важна адаптивная
стилизация:
.featherlight.custom-lightbox {
max-width: 600px;
padding: 20px;
background: #fff;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
}
.featherlight.custom-lightbox .featherlight-content {
font-size: 16px;
line-height: 1.5;
}
Использование класса variant позволяет создавать
отдельные стили для различных типов inline-модальных окон без
дублирования CSS.
Inline-контент может содержать интерактивные элементы: кнопки, ссылки, формы. Featherlight корректно обрабатывает события внутри окна, но важно учитывать:
close():$('#inline-content #close-btn').on('click', function(){
$.featherlight.close();
});
На одной странице можно иметь несколько блоков с inline-контентом. Каждому блоку соответствует отдельная ссылка или триггер:
<a href="#info1" data-featherlight="inline">Показать информацию 1</a>
<a href="#info2" data-featherlight="inline">Показать информацию 2</a>
<div id="info1" style="display: none;">Контент 1</div>
<div id="info2" style="display: none;">Контент 2</div>
Featherlight корректно определяет, какой блок открывать, исходя из
href. При этом каждый блок может иметь собственные стили и
варианты.
variant позволяет создавать визуально
уникальные окна без изменения базового CSS библиотеки.Featherlight с inline-контентом предоставляет гибкий и быстрый инструмент для создания модальных окон с минимальным вмешательством в DOM и легкой кастомизацией.