Overlay в библиотеке Featherlight — это затемняющий слой, размещаемый поверх основного контента страницы и под модальным окном. Он решает сразу несколько задач: визуально изолирует модальное содержимое, предотвращает взаимодействие с фоном и служит дополнительной областью для обработки пользовательских событий (например, закрытие по клику).
В Featherlight overlay реализован как DOM-элемент с классом
.featherlight-overlay, создаваемый и удаляемый динамически
при открытии и закрытии lightbox.
При активации Featherlight в DOM добавляются следующие ключевые элементы:
<div class="featherlight-overlay"></div>
<div class="featherlight">
<div class="featherlight-content">
…
</div>
</div>
Критически важные моменты:
z-indexПо умолчанию используются следующие значения:
.featherlight-overlay {
z-index: 9998;
}
.featherlight {
z-index: 9999;
}
Стандартный overlay выглядит как полупрозрачный чёрный фон:
.featherlight-overlay {
background: rgba(0, 0, 0, 0.8);
}
Допустима полная переопределённость внешнего вида через CSS без вмешательства в Jav * aScript:
backdrop-filter)Пример мягкого светлого overlay:
.featherlight-overlay {
background: rgba(255, 255, 255, 0.6);
}
Featherlight позволяет тонко управлять overlay через параметры и события.
Для модальных окон без затемнения:
$.featherlight(content, {
overlay: false
});
В этом случае элемент .featherlight-overlay вообще не
создаётся.
По умолчанию клик по overlay закрывает lightbox. Это поведение
контролируется опцией closeOnClick:
$.featherlight(content, {
closeOnClick: false
});
Теперь overlay будет полностью игнорировать клики.
Featherlight поддерживает механизм наследования CSS-классов через
опцию className. Это влияет и на overlay.
$.featherlight(content, {
className: 'custom-lightbox'
});
В DOM появится:
<div class="featherlight-overlay custom-lightbox"></div>
Что позволяет адресно стилизовать overlay конкретного типа модальных окон:
.featherlight-overlay.custom-lightbox {
background: rgba(30, 30, 60, 0.85);
}
Featherlight не навязывает анимаций, но легко интегрируется с CSS transition или animation.
Пример плавного появления:
.featherlight-overlay {
opacity: 0;
transition: opacity 0.3s ease;
}
.featherlight-open .featherlight-overlay {
opacity: 1;
}
Класс .featherlight-open автоматически добавляется к
html при открытии lightbox, что делает его удобной точкой
входа для анимаций.
Featherlight допускает множественные активные экземпляры, при этом:
При сложных сценариях (вложенные модальные окна) возможно ручное управление:
$.featherlight.defaults.overlay = true;
$.featherlight.defaults.zIndex = 2000;
Это особенно важно при интеграции с другими библиотеками модальных окон.
Overlay доступен через текущий экземпляр Featherlight:
var instance = $.featherlight(content);
instance.$overlay.css({
backgroundColor: 'rgba(0, 0, 0, 0.9)'
});
Это позволяет:
Overlay поддерживает стандартные jQuery-события:
$(document).on('click', '.featherlight-overlay', function (e) {
// произвольная логика
});
При этом важно учитывать:
e.stopImmediatePropagation()Современные браузеры позволяют использовать
backdrop-filter:
.featherlight-overlay {
backdrop-filter: blur(6px);
background: rgba(0, 0, 0, 0.4);
}
Такой подход создаёт эффект «матового стекла», не затрагивая модальное окно.
Для нестандартных интерфейсов overlay можно полностью заменить:
$.featherlight.defaults.afterOpen = function () {
this.$overlay.remove();
};
И реализовать собственный слой затемнения вне Featherlight, сохранив только модальное окно.
fixedOverlay блокирует фоновое взаимодействие, но не управляет фокусом. Для корректной доступности требуется дополнительная логика:
.featherlight-contentOverlay в Featherlight — визуальный и событийный слой, а не полноценный accessibility-механизм.
Overlay в Featherlight — это:
Гибкость реализации позволяет адаптировать overlay под строгие дизайн-системы, сложные интерфейсы и нестандартные UX-сценарии без модификации исходного кода библиотеки.