Featherlight — это лёгкая и минималистичная библиотека для создания модальных окон на JavaScript и jQuery. Основным способом управления поведением модальных окон являются селекторы, которые определяют элементы страницы, взаимодействие с которыми вызывает открытие или закрытие всплывающих окон. Работа с селекторами позволяет точно настраивать интерактивность и интегрировать Featherlight в сложные пользовательские интерфейсы.
Селекторы в Featherlight работают по принципу jQuery: любой селектор, поддерживаемый jQuery, может быть использован для указания целевых элементов.
Простейший пример:
<a href="#modal-content" class="lightbox">Открыть окно</a>
<div id="modal-content" style="display:none;">
<p>Содержимое модального окна.</p>
</div>
<script>
$('.lightbox').featherlight();
</script>
В этом примере:
'.lightbox' — селектор-инициатор,
элементы которого при клике открывают модальное окно.href="#modal-content" указывает на содержимое, которое
будет отображено в модальном окне.Ключевое свойство Featherlight — гибкость селекторов: можно использовать ID, классы, атрибуты, псевдоклассы, сложные CSS-селекторы.
Featherlight позволяет определять контент модального окна несколькими способами:
$.featherlight('#existing-element');
$.featherlight('<div>Новый контент</div>');
$.featherlight(function(){
return $('#dynamic-content');
});
Преимущество функций — возможность динамически выбирать элементы в зависимости от состояния страницы.
Featherlight поддерживает сложные CSS-селекторы для более точного выбора элементов:
$('.gallery a[data-type="image"]').featherlight();
В этом случае открываются только ссылки с атрибутом
data-type="image".
Можно комбинировать селекторы через запятую:
$('#button1, .open-modal, a.special-link').featherlight();
Каждый из выбранных элементов становится триггером для модального окна.
Featherlight умеет автоматически использовать атрибуты элементов как селекторы контента:
data-featherlight="#selector" — указывает на
существующий элемент.data-featherlight="ajax" — загружает контент с внешнего
URL.data-featherlight="image" — открывает изображение в
модальном окне.Пример использования:
<a href="image.jpg" data-featherlight="image">Посмотреть фото</a>
В этом случае data-featherlight автоматически определяет
тип контента и его источник без явного указания селектора в скрипте.
Featherlight позволяет задать элементы внутри модального окна, при клике на которые оно будет закрываться:
<div id="modal" style="display:none;">
<p>Текст окна</p>
<button class="close-btn">Закрыть</button>
</div>
<script>
$.featherlight('#modal', {
closeSelector: '.close-btn'
});
</script>
Параметр closeSelector принимает любой jQuery-селектор
внутри модального окна. Это позволяет полностью кастомизировать элементы
управления.
Featherlight поддерживает callback-события, к которым можно привязать селекторы:
beforeOpen — срабатывает до открытия модального
окна.afterOpen — после открытия.beforeClose и afterClose — для
закрытия.Пример:
$.featherlight('#modal', {
beforeOpen: function(event){
$(event.currentTarget).find('.title').text('Динамический заголовок');
}
});
Селекторы внутри callback-функций позволяют манипулировать содержимым окна прямо перед его отображением.
Для динамически созданных элементов удобно использовать делегирование событий:
$(document).on('click', '.dynamic-link', function(){
$.featherlight($(this).data('target'));
});
В этом случае не важно, когда элемент появится на странице:
Featherlight корректно откроет модальное окно для любого элемента,
соответствующего селектору .dynamic-link.
$(селектор)) перед применением в Featherlight.Селекторы в Featherlight — это универсальный инструмент, обеспечивающий гибкую интеграцию модальных окон в любые структуры страницы. Благодаря поддержке CSS и jQuery-синтаксиса можно реализовать практически любую логику отображения и управления контентом.