Featherlight — это легковесная библиотека для создания модальных окон (lightbox) на JavaScript, которая строится поверх jQuery. Для корректной работы необходимо правильно подключить все зависимости и настроить среду.
Featherlight полностью зависит от jQuery. Любая версия jQuery начиная с 1.7 совместима, однако рекомендуется использовать актуальные стабильные версии (3.x), чтобы избежать конфликтов с современными браузерами и другими библиотеками.
Пример подключения jQuery через CDN:
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
Важно: <script> с jQuery должен располагаться
до подключения Featherlight. Если порядок нарушен,
библиотека не инициализируется, и любые вызовы
$.featherlight() приведут к ошибке
Uncaught ReferenceError: $ is not defined.
Featherlight состоит из двух основных файлов: CSS и JavaScript.
Пример подключения через CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.css">
<script src="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js"></script>
Можно использовать локальные копии файлов. В этом случае порядок подключения остается тем же: сначала CSS (для визуальных эффектов), затем JS (для логики).
Featherlight поддерживает расширения для работы с изображениями, галереями, iframe и другими типами контента. Каждое расширение представляет отдельный JavaScript-файл и иногда CSS.
Пример подключения расширения галереи:
<script src="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.gallery.min.js"></script>
Расширения подключаются после основного файла featherlight.min.js. При этом порядок подключения нескольких расширений имеет значение: зависимости между ними должны соблюдаться, иначе возможны ошибки и некорректная работа функционала.
Featherlight хорошо сочетается с большинством современных JavaScript-библиотек, но следует учитывать несколько нюансов:
Использование jQuery в режиме noConflict требует вызова Featherlight через полностью квалифицированное имя:
jQuery.featherlight('<p>Пример</p>');Если на странице уже подключены другие lightbox-библиотеки, возможны конфликты CSS. В таких случаях рекомендуется ограничивать область действия селекторов Featherlight через кастомные классы.
Для минимизации времени загрузки рекомендуется:
<head> или перед
закрывающим тегом </body> в зависимости от
приоритетности визуальных эффектов..min.css и
.min.js).<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Пример Featherlight</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.css">
</head>
<body>
<a href="#demo-content" data-featherlight>Открыть модальное окно</a>
<div id="demo-content" style="display:none;">
<h2>Содержимое модального окна</h2>
<p>Пример текста.</p>
</div>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js"></script>
</body>
</html>