Featherlight — это минималистичная библиотека для создания легких модальных окон (lightbox) на веб-страницах. Основное предназначение при работе с изображениями — открытие, просмотр и навигация по медиа-контенту без перезагрузки страницы. Featherlight отличается компактным размером, простотой подключения и гибкостью настройки через JavaScript и HTML-атрибуты.
Для работы с Featherlight необходимо подключить библиотеку и её стили:
<link href="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js"></script>
Инициализация может выполняться двумя способами: через HTML-атрибуты и через JavaScript.
Через HTML-атрибут:
<a href="image.jpg" data-featherlight="image">Открыть изображение</a>
Через Jav * aScript:
$('.open-lightbox').featherlight({
iframe: false,
closeOnClick: 'background',
afterOpen: function() {
console.log('Lightbox открыт');
}
});
В этом случае можно детально настраивать поведение, такие как автозакрытие, задержку анимации и обработку событий.
Featherlight автоматически определяет контент по ссылке: если
href указывает на изображение (.jpg,
.png, .gif), оно будет открыто в модальном
окне. Важные параметры для работы с изображениями:
closeOnClick — определяет, закрывается
ли модальное окно при клике на фон (true,
false, 'background').variant — позволяет добавлять
CSS-классы для кастомизации внешнего вида.afterContent — функция, вызываемая
после загрузки содержимого.Пример с кастомным классом и логированием:
$.featherlight.defaults.variant = 'custom-lightbox';
$('a[data-featherlight="image"]').featherlight({
afterContent: function() {
console.log('Изображение загружено');
}
});
Featherlight поддерживает создание галерей без дополнительных
плагинов. Для этого достаточно сгруппировать ссылки с одинаковым
data-featherlight-gallery:
<a href="img1.jpg" data-featherlight="image" data-featherlight-gallery="gallery1">1</a>
<a href="img2.jpg" data-featherlight="image" data-featherlight-gallery="gallery1">2</a>
<a href="img3.jpg" data-featherlight="image" data-featherlight-gallery="gallery1">3</a>
Навигация по галерее осуществляется стрелками или клавишами клавиатуры. Параметры галереи можно настраивать через Jav * aScript:
$.featherlightGallery.prototype.afterContent = function() {
console.log('Галерея: изображение загружено');
};
Особенности:
Featherlight предоставляет базовые анимации через CSS. Основные возможности:
Применение через параметр openSpeed и
closeSpeed:
$('a[data-featherlight="image"]').featherlight({
openSpeed: 300,
closeSpeed: 300,
afterOpen: function() {
$(this.$content).css('transform', 'scale(1)');
}
});
Для больших изображений или динамических источников можно
использовать отложенную загрузку. Featherlight позволяет подставлять
содержимое через функцию featherlight():
$('#open-image').click(function() {
$.featherlight('<img src="large-image.jpg">', {
afterContent: function() {
console.log('Большое изображение загружено');
}
});
});
Такой подход полезен для ленивой загрузки или для работы с изображениями, получаемыми через API.
Featherlight предоставляет события для полного контроля над жизненным циклом модального окна:
beforeOpen — перед открытием.afterOpen — после открытия.beforeClose — перед закрытием.afterClose — после закрытия.Пример отслеживания событий для изображения:
$('a[data-featherlight="image"]').featherlight({
beforeOpen: function() {
console.log('Начало открытия изображения');
},
afterClose: function() {
console.log('Модальное окно закрыто');
}
});
Featherlight минимально навязывает стили, что позволяет полностью адаптировать визуальное оформление:
.featherlight.custom-lightbox .featherlight-content {
border-radius: 10px;
box-shadow: 0 0 20px rgba(0,0,0,0.5);
}
.featherlight.custom-lightbox .featherlight-close {
color: #fff;
font-size: 20px;
}
Можно изменять размеры окна, добавлять рамки, тени, эффекты при наведении и любые другие визуальные улучшения.
Featherlight корректно обрабатывает адаптивные изображения, сохраняя пропорции и масштабируя контент по размеру окна:
<a href="img-large.jpg" data-featherlight="image">
<img src="img-small.jpg" alt="Превью">
</a>
Модальное окно откроет большое изображение, сохраняя адаптивность. Для мобильных устройств можно добавлять медиа-запросы в CSS, чтобы уменьшить размер и ускорить загрузку.
<a href="photo.jpg" data-featherlight="image">Фото</a>
<a href="1.jpg" data-featherlight="image" data-featherlight-gallery="set1">1</a>
<a href="2.jpg" data-featherlight="image" data-featherlight-gallery="set1">2</a>
$('#open-dynamic').click(function() {
$.featherlight('<img src="dynamic.jpg">');
});
Featherlight сочетает минимализм, скорость и гибкость, что делает его идеальным инструментом для организации просмотра изображений на веб-страницах, будь то отдельные фотографии или большие галереи.