Featherlight — лёгкая библиотека для создания модальных окон в JavaScript. Основой её работы является минималистичная структура и гибкая система внутренних компонентов, которые обеспечивают как визуальную, так и функциональную сторону модальных окон. Понимание этих компонентов позволяет максимально эффективно настраивать поведение и внешний вид модальных элементов.
Контейнер ($.featherlight) — это
основной элемент, в который помещается содержимое модального окна. Он
создаётся динамически при инициализации и содержит следующие ключевые
части:
featherlight) — корневой
элемент, обеспечивающий позиционирование по центру окна и затемнение
фона.featherlight-content) —
блок, в котором располагается основной контент (текст, HTML,
изображения).featherlight-close-icon) — кнопка закрытия окна,
автоматически добавляемая библиотекой, если включена опция
closeIcon.Контейнер поддерживает стандартные стили и может быть расширен через
кастомные CSS-классы. Для управления видимостью используются методы
.open() и .close(), а также события
beforeOpen, afterOpen,
beforeClose, afterClose.
Featherlight работает с различными типами контента,
которые задаются через опцию content или атрибут
data-featherlight у триггерного элемента:
$.featherlight('<div>Пример</div>').$.featherlight($('#myDiv')).ajax может быть объектом с URL и настройками
запроса.<img> внутри
featherlight-content.Для динамического обновления содержимого можно использовать метод
instance.content().
Featherlight включает несколько внутренних слоёв, обеспечивающих визуальные эффекты:
featherlight-overlay) —
затемнённая область за модальным окном. Позволяет блокировать
взаимодействие с контентом страницы.fade, slideDown и пользовательские анимации.
Настройка производится через опции openSpeed и
closeSpeed.beforeOpen для динамического расчёта
размеров.Featherlight предоставляет встроенные события, которые позволяют вмешиваться в жизненный цикл окна:
beforeOpen — вызывается до отображения окна. Можно
использовать для подготовки контента.afterOpen — срабатывает после того, как окно полностью
показано. Идеально для инициализации плагинов внутри модального
блока.beforeClose — перед закрытием. Позволяет отменить
закрытие при определённых условиях.afterClose — после закрытия, освобождает ресурсы и
позволяет восстановить исходное состояние страницы.Все события работают через стандартный jQuery-синтаксис:
$(document).on('afterOpen.fb', function(e, instance){ ... });.
Featherlight предоставляет гибкую систему опций, которая напрямую связана с внутренними компонентами:
targetAttr — атрибут триггера, содержащий URL или
селектор.closeOnClick — закрытие при клике на фон, на контент
или по умолчанию (true закрывает при клике на фон).persist — определяет, сохраняется ли DOM-элемент после
закрытия.namespace — позволяет изменять классы контейнера и
элементов, чтобы избежать конфликтов с другими стилями.Эти настройки передаются при инициализации и могут изменяться для каждого отдельного модального окна, создавая уникальные комбинации поведения.
Featherlight легко расширяется за счёт создания наследуемых плагинов. Любой компонент можно переопределить:
_setup и
_afterContent позволяет контролировать структуру контейнера
и вставку контента.featherlight-content.featherlight-close-icon → вызывается
beforeClose → скрывается overlay → удаляется контейнер
(если persist: false).beforeOpen → отправляется запрос →
контент вставляется через _afterContent →
afterOpen.Эта последовательность подчёркивает, что внутренние компоненты работают как взаимосвязанная система, где изменение одного элемента влияет на весь жизненный цикл окна.
Featherlight строится на минималистичных, но мощных внутренних компонентах, где контейнер, контент, фон и события создают основу для модульного, расширяемого и легко настраиваемого функционала модальных окон. Именно понимание их взаимодействия позволяет создавать сложные интерфейсы без потери лёгкости и производительности.