Featherlight — это лёгкая и минималистичная библиотека для создания модальных окон на JavaScript. Основная сила её заключается в простоте интеграции с HTML-разметкой, что позволяет быстро открывать контент без сложной настройки.
Модальные окна в Featherlight не требуют явного добавления HTML-контейнера в документ заранее. Обычно они создаются динамически при клике на элемент, который служит триггером. Основной принцип работы — указание ссылки или блока, который будет отображён в модальном окне.
Простейший пример:
<a href="#modal-content" data-featherlight>Открыть окно</a>
<div id="modal-content" style="display:none;">
<h2>Заголовок модального окна</h2>
<p>Содержимое окна. Может быть текст, изображения или любой HTML-код.</p>
</div>
Ключевые моменты:
data-featherlight указывает, что элемент
является триггером.href может быть ID блока
(#modal-content) или URL изображения.div) изначально скрыт через
display:none.Featherlight поддерживает несколько типов контента:
href
на URL изображения. Featherlight автоматически определяет тип и создаёт
контейнер с изображением.<a href="image.jpg" data-featherlight="image">Посмотреть изображение</a>
<a href="/modal-content.html" data-featherlight="ajax">Загрузить контент</a>
<a href="https://example.com" data-featherlight="iframe">Открыть iFrame</a>
Featherlight позволяет настраивать класс контейнера и его стили напрямую через HTML:
<a href="#modal-custom" data-featherlight data-featherlight-class="custom-lightbox">
Открыть окно с кастомным классом
</a>
<div id="modal-custom" style="display:none;">
<p>Содержимое с индивидуальным стилем.</p>
</div>
data-featherlight-class добавляет собственный
CSS-класс к модальному окну.В случае сложных интерфейсов Featherlight позволяет использовать динамический контент внутри модального окна:
<a href="jav * ascript:;" data-featherlight="#dynamic-content">Открыть динамическое окно</a>
<div id="dynamic-content" style="display:none;">
<form id="modal-form">
<label>Имя:</label>
<input type="text" name="name">
<button type="submit">Отправить</button>
</form>
</div>
Featherlight поддерживает несколько модальных окон на одной странице. Каждый триггер может указывать на отдельный контейнер:
<a href="#modal-one" data-featherlight>Окно 1</a>
<a href="#modal-two" data-featherlight>Окно 2</a>
<div id="modal-one" style="display:none;">Содержимое первого окна</div>
<div id="modal-two" style="display:none;">Содержимое второго окна</div>
Для корректной работы модальных окон важно сохранять семантику HTML:
<button> для триггеров, если
они не являются ссылками.display:none вместо удаления из
DOM, чтобы контент оставался доступным для вспомогательных
технологий.<h2>–<h3> внутри окна для
структуры контента.Правильная разметка HTML обеспечивает стабильную работу Featherlight и гибкость при работе с различными типами контента. Сосредоточенность на семантике, уникальных идентификаторах и правильной организации триггеров создаёт основу для динамичных и лёгких модальных окон.