Featherlight — это минималистичная библиотека для создания модальных окон на JavaScript и jQuery. Она легкая, не требует сложной настройки и поддерживает расширение функциональности через плагины, одним из которых является Featherlight Gallery. Этот плагин позволяет создавать карусели изображений, галереи с навигацией и плавными переходами между элементами.
Featherlight Gallery работает как надстройка над базовым
Featherlight. Для использования галереи необходимо подключить основной
скрипт Featherlight и отдельный скрипт галереи
(jquery.featherlight.gallery.js), а также стили
featherlight.css и
featherlight.gallery.css.
<link href="featherlight.css" rel="stylesheet">
<link href="featherlight.gallery.css" rel="stylesheet">
<script src="jquery.js"></script>
<script src="jquery.featherlight.js"></script>
<script src="jquery.featherlight.gallery.js"></script>
Галерея инициализируется с помощью селектора, который указывает на все элементы, содержащие изображения для показа. Например:
$('.gallery a').featherlightGallery({
gallery: {
fadeIn: 300,
fadeOut: 300,
previous: '◀',
next: '▶'
}
});
В этом примере:
fadeIn и fadeOut задают длительность
анимации появления и скрытия окна.previous и next задают символы или текст
кнопок навигации между изображениями.Параметр gallery позволяет настраивать поведение галереи
отдельно от базового окна Featherlight.
Featherlight Gallery использует стандартные ссылки
<a> с атрибутом href, указывающим на
изображение. Все элементы галереи должны иметь общий контейнер или
класс. Например:
<div class="gallery">
<a href="img1.jpg" title="Первое изображение"><img src="thumb1.jpg" alt=""></a>
<a href="img2.jpg" title="Второе изображение"><img src="thumb2.jpg" alt=""></a>
<a href="img3.jpg" title="Третье изображение"><img src="thumb3.jpg" alt=""></a>
</div>
Каждый элемент может содержать атрибут title, который
будет отображаться в модальном окне в качестве подписи к
изображению.
Featherlight Gallery поддерживает несколько видов навигации:
previous и next.Дополнительно можно включить циклическую навигацию с помощью
параметра loop:
$('.gallery a').featherlightGallery({
gallery: {
loop: true
}
});
Если loop установлен в true, то после
последнего изображения галерея вернётся к первому.
Featherlight Gallery предоставляет ряд событий, которые можно использовать для расширенной логики:
beforeOpen — вызывается перед открытием окна.afterOpen — после открытия.beforeClose — перед закрытием.afterClose — после закрытия.change — при смене изображения.Пример использования событий:
$('.gallery a').featherlightGallery({
beforeOpen: function(event){
console.log('Открытие галереи');
},
change: function(event){
console.log('Показ изображения: ', this.currImg);
}
});
this.currImg возвращает DOM-элемент текущего
изображения.
Featherlight Gallery использует CSS для стилизации кнопок навигации, подписи и контейнера. Основные классы:
.featherlight — основной контейнер модального
окна..featherlight-content — контейнер для контента..featherlight-gallery — активная галерея..featherlight-nav — навигационные элементы..featherlight-caption — подпись изображения.Для изменения внешнего вида достаточно переопределить эти классы в собственных стилях. Например, чтобы изменить цвет кнопок:
.featherlight-nav a {
color: #ffffff;
background: rgba(0, 0, 0, 0.5);
border-radius: 50%;
}
Помимо изображений, Featherlight Gallery может работать с видео и
другими HTML-элементами. Для этого в атрибуте href
указывают ссылку на iframe или создают отдельный контейнер с
контентом:
<a href="https://www.youtube.com/embed/dQw4w9WgXcQ" data-featherlight="iframe">Видео</a>
В таком случае плагин автоматически откроет iframe в модальном окне с навигацией по галерее.
Для больших галерей рекомендуется:
thumb) для уменьшения веса
страницы.loading="lazy".Featherlight Gallery не нагружает DOM лишними элементами: все элементы создаются динамически при открытии окна и удаляются при закрытии, что сохраняет производительность даже при сотнях изображений.
$('.gallery a').featherlightGallery({
gallery: {
slideshow: true,
slideshowSpeed: 5000
}
});
$.featherlightGallery.prototype.template =
'<div class="featherlight-gallery custom">' +
'<div class="featherlight-content"></div>' +
'<nav class="featherlight-nav"></nav>' +
'<div class="featherlight-caption"></div>' +
'</div>';
$('.gallery a[data-category="nature"]').featherlightGallery();
Эта функция позволяет создавать несколько независимых галерей на одной странице.
Featherlight Gallery сочетает минимализм, легкость и гибкость настройки, обеспечивая удобную навигацию по изображениям, подписи, анимации и поддержку медиа-контента, оставаясь при этом максимально производительной.