Использование селекторов

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 позволяет определять контент модального окна несколькими способами:

  1. Ссылки на элементы страницы Используется стандартный CSS-селектор:
$.featherlight('#existing-element');
  1. HTML-код напрямую Можно передать строку с HTML:
$.featherlight('<div>Новый контент</div>');
  1. Функции или селекторы для динамического контента Можно использовать функцию, возвращающую селектор или HTML:
$.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.


Рекомендации по работе с селекторами

  • Использовать уникальные селекторы, чтобы избежать конфликта с другими элементами страницы.
  • Для группы элементов применять общий класс, а не дублировать ID.
  • Для динамического контента предпочтительны функции вместо статических селекторов.
  • Проверять корректность селектора в консоли браузера ($(селектор)) перед применением в Featherlight.

Селекторы в Featherlight — это универсальный инструмент, обеспечивающий гибкую интеграцию модальных окон в любые структуры страницы. Благодаря поддержке CSS и jQuery-синтаксиса можно реализовать практически любую логику отображения и управления контентом.