Featherlight — это лёгкая библиотека для создания модальных окон на JavaScript. Она отличается минималистичностью, высокой производительностью и гибкостью настройки, что делает её удобной для реализации адаптивных изображений. В отличие от тяжёлых плагинов, Featherlight работает без сложных зависимостей, обеспечивая быстрый отклик и лёгкую интеграцию с любым проектом.
Для использования Featherlight достаточно подключить библиотеку и добавить элемент триггера:
<a href="image-large.jpg" data-featherlight="image">
<img src="image-small.jpg" alt="Превью">
</a>
В этом примере href указывает на большое изображение,
которое будет открыто в модальном окне, а тег <img>
содержит миниатюру для страницы. Атрибут
data-featherlight="image" автоматически инициирует
поведение модального окна при клике на ссылку.
// Инициализация через JS
$.featherlight.defaults.closeOnClick = 'background'; // Закрытие по клику на фон
Использование JavaScript-инициализации позволяет гибко управлять поведением модального окна, например, отключать автоматическое закрытие, задавать анимацию и другие параметры.
Для поддержки разных размеров экранов важно использовать атрибуты
srcset и sizes. Featherlight корректно
обрабатывает такие изображения при открытии:
<a href="image-large.jpg" data-featherlight="image">
<img src="image-small.jpg"
srcset="image-small.jpg 480w, image-medium.jpg 768w, image-large.jpg 1200w"
sizes="(max-width: 600px) 480px, (max-width: 900px) 768px, 1200px"
alt="Превью">
</a>
Featherlight открывает изображение, указанное в href, но
при необходимости можно динамически менять источник через опцию
afterContent:
$('a[data-featherlight="image"]').featherlight({
afterContent: function() {
var img = this.$content.find('img');
if(window.innerWidth < 768) {
img.attr('src', 'image-medium.jpg');
} else {
img.attr('src', 'image-large.jpg');
}
}
});
Этот подход позволяет адаптировать загружаемое изображение под размеры окна браузера, уменьшая объём передаваемых данных и ускоряя отображение.
Featherlight поддерживает CSS-анимации и стилизацию модального окна через классы и опции. Для адаптивных изображений важно контролировать максимальную ширину и высоту окна, чтобы изображение не выходило за пределы экрана:
.featherlight img {
max-width: 90vw;
max-height: 90vh;
height: auto;
width: auto;
display: block;
margin: 0 auto;
}
Параметры JavaScript могут влиять на анимацию появления:
$.featherlight.defaults.openSpeed = 300; // скорость открытия в миллисекундах
$.featherlight.defaults.closeSpeed = 200; // скорость закрытия
Комбинация CSS и опций Featherlight позволяет сделать плавное открытие изображения на любом устройстве и сохранять пропорции при изменении размеров окна.
Для больших галерей Featherlight поддерживает динамическую загрузку контента через функции:
$('a.gallery-item').featherlight({
iframe: false,
targetAttr: 'href',
afterContent: function() {
var container = this.$content;
var img = $('<img>').attr('src', container.data('src'));
container.html(img);
}
});
Это позволяет подгружать изображение только при открытии модального окна, экономя трафик и ускоряя начальную загрузку страницы.
Featherlight корректно работает на мобильных устройствах и поддерживает swipe-эффекты через сторонние библиотеки. Для адаптивных изображений можно обрабатывать жесты прокрутки или свайпа между изображениями:
$('.gallery-item').featherlightGallery({
previous: '<',
next: '>',
openSpeed: 250,
closeSpeed: 200
});
Использование featherlightGallery позволяет создавать
полноценные адаптивные галереи с поддержкой мобильного UX и минимальной
нагрузкой на браузер.
Featherlight предоставляет набор событий для управления жизненным циклом модального окна:
beforeOpen — перед открытием окнаafterOpen — после открытия, можно подгружать адаптивное
изображениеbeforeClose — перед закрытиемafterClose — после закрытия, полезно для очистки
ресурсовПример динамического изменения изображений на основе события
afterOpen:
$('a[data-featherlight="image"]').featherlight({
afterOpen: function() {
var img = this.$content.find('img');
if(window.innerWidth < 480) {
img.attr('src', 'image-small.jpg');
}
}
});
События позволяют максимально гибко управлять отображением контента и оптимизировать его под разные устройства.
Featherlight не ограничивает источники изображений. Для экранов с
высокой плотностью пикселей можно подставлять изображения высокого
разрешения, используя data-src или srcset:
$('a[data-featherlight="image"]').featherlight({
afterContent: function() {
var img = this.$content.find('img');
if(window.devicePixelRatio > 1) {
img.attr('src', img.data('retina-src'));
}
}
});
Это обеспечивает чёткую картинку на всех устройствах без потери производительности.
Featherlight сочетает лёгкость и гибкость, позволяя реализовать адаптивные изображения с динамической подгрузкой, поддержкой touch-событий, Retina-экранов и различных форматов изображений. Его событийная система и CSS-настройки обеспечивают полный контроль над отображением, позволяя создавать быстрые, визуально аккуратные модальные окна для любого проекта.