Featherlight — это лёгкая и минималистичная библиотека для создания модальных окон (lightbox) на JavaScript и jQuery. Она позволяет открывать изображения, HTML-контент и даже AJAX-запросы в удобном модальном интерфейсе с минимальными усилиями. Основное преимущество — компактность кода и гибкость настройки.
Для работы с Featherlight необходимо подключить jQuery и сами скрипт и стили Featherlight. Минимальный набор файлов выглядит следующим образом:
Важно соблюдать порядок подключения: сначала jQuery, затем Featherlight.
Featherlight позволяет открывать изображение по клику на ссылку или
кнопку. Для этого необходимо указать ссылку на изображение и добавить
атрибут data-featherlight с типом image (по
умолчанию Featherlight определяет контент автоматически, но явное
указание повышает читаемость кода):
Открыть изображение
В этом примере по клику на ссылку откроется модальное окно с указанным изображением. Featherlight автоматически добавляет затемнение фона и возможность закрытия по клику вне изображения или по клавише Esc.
Featherlight поддерживает объект конфигурации, который можно передавать при инициализации. Основные параметры для работы с одиночными изображениями:
targetAttr — атрибут ссылки, где хранится путь к
контенту (по умолчанию href).variant — класс модального окна для кастомного
оформления.closeOnClick — управление закрытием по клику на фон или
контент ('anywhere', 'background',
false).closeIcon — HTML или символ кнопки закрытия.afterOpen и afterClose — коллбеки,
выполняемые после открытия и закрытия окна.Пример с кастомными настройками:
$('a[data-featherlight="image"]').featherlight({
variant: 'custom-lightbox',
closeOnClick: 'background',
afterOpen: function(event){
console.log('Изображение открыто');
},
afterClose: function(event){
console.log('Модальное окно закрыто');
}
});
Даже при открытии одиночных изображений можно организовать навигацию
между ними, объединяя ссылки в группы через атрибут
data-featherlight-gallery:
Фото 1
Фото 2
Фото 3
Featherlight автоматически добавляет стрелки навигации, если несколько элементов имеют одинаковое значение галереи.
Можно открывать изображения, создаваемые динамически через JavaScript. Например:
$('Динамическое изображение')
.appendTo('body')
.featherlight();
При этом не требуется предварительная инициализация каждой ссылки. Featherlight корректно обработает добавленный элемент и откроет модальное окно.
Featherlight автоматически масштабирует изображения по размеру окна, сохраняя пропорции. Для дополнительного контроля можно использовать CSS:
.featherlight .featherlight-content img {
max-width: 90vw;
max-height: 90vh;
border-radius: 8px;
}
Эти стили ограничивают размеры изображения и добавляют закруглённые углы для более современного вида.
Featherlight позволяет закрывать модальное окно несколькими способами:
closeOnClick разрешён).× или кастомная)..featherlight('close') программно:$.featherlight.close();
Featherlight предоставляет события для отслеживания состояния окна:
beforeOpen — перед открытием.afterOpen — после открытия.beforeClose — перед закрытием.afterClose — после закрытия.Пример использования событий:
$('a[data-featherlight="image"]').on('afterOpen.fb', function(event){
console.log('Изображение открыто через событие');
});
Это позволяет интегрировать Featherlight с другими библиотеками или выполнять дополнительную логику при взаимодействии пользователя с изображениями.
Для повышения производительности рекомендуется использовать
миниатюрные изображения для предварительного просмотра и загружать
большие версии только при открытии модального окна. Featherlight
корректно работает с href на большое изображение, а
миниатюра может быть встроена в HTML:
Featherlight автоматически загружает полноразмерное изображение при открытии, сохраняя скорость рендера страницы.