Featherlight — это лёгкая и минималистичная библиотека для создания модальных окон в JavaScript. Она разработана для того, чтобы обеспечивать базовый функционал модальных окон без перегрузки интерфейса и кода. Основные возможности включают поддержку контента из DOM, Ajax-запросов и изображений, простую настройку анимаций и событий.
Подключение библиотеки производится стандартным способом: через CSS и JS-файлы. Важно подключать jQuery перед Featherlight, так как библиотека построена на его основе.
<link href="featherlight.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="featherlight.min.js"></script>
Для открытия модального окна достаточно добавить атрибут
data-featherlight к элементу:
<a href="#demo-content" data-featherlight="inline">Открыть окно</a>
<div id="demo-content" style="display:none;">
Контент модального окна
</div>
Featherlight предоставляет несколько ключевых опций, которые настраиваются при инициализации:
href.image,
iframe, ajax или inline.Пример передачи опций:
$.featherlight('#demo-content', {
afterOpen: function() {
console.log('Модальное окно открыто');
},
beforeClose: function() {
console.log('Модальное окно закроется');
}
});
Inline-контент используется для отображения скрытых элементов страницы. Он не требует дополнительных запросов и загружается мгновенно.
Ajax-контент позволяет подгружать HTML с сервера. Featherlight автоматически создаёт запрос и вставляет результат в тело модального окна:
$.featherlight('/ajax/content.html', {
type: 'ajax',
afterContent: function() {
console.log('Контент загружен');
}
});
Изображения открываются с автоматической подгонкой под окно браузера. Featherlight управляет масштабированием и центрированием:
<a href="image.jpg" data-featherlight="image">Посмотреть изображение</a>
Iframe используется для отображения внешних страниц:
$.featherlight('<iframe src="https://example.com" width="600" height="400"></iframe>');
Featherlight имеет развитую систему событий:
beforeOpen и afterOpen — перед и после
открытия окна.beforeClose и afterClose — перед и после
закрытия.afterContent — после загрузки контента (важно для Ajax
и iframe).Пример подписки на события через jQuery:
$(document).on('featherlight:afterOpen', function(event) {
console.log('Модальное окно открылось');
});
Featherlight использует CSS для стилизации. По умолчанию окно имеет фиксированное позиционирование и плавное появление. Для изменения анимаций или размеров можно переопределять следующие классы:
.featherlight — контейнер окна..featherlight-content — блок с контентом..featherlight-close — кнопка закрытия.Пример изменения стилей через CSS:
.featherlight {
background: rgba(0, 0, 0, 0.85);
}
.featherlight-content {
border-radius: 8px;
padding: 20px;
}
.featherlight-close {
color: #fff;
font-size: 18px;
}
Для высоконагруженных страниц важно минимизировать количество вызовов Featherlight и использование тяжелого контента. Основные рекомендации:
close.Featherlight поддерживает расширения через плагины. Пример добавления кнопки действия внутри модального окна:
$.featherlight.extend({
afterOpen: function() {
this.$content.append('<button id="action">Действие</button>');
$('#action').on('click', () => alert('Кнопка нажата'));
}
});
Расширения позволяют интегрировать модальные окна с внешними библиотеками и системами управления состоянием страницы. Их можно использовать для создания галерей, форм обратной связи и динамических интерфейсов.
Featherlight работает во всех современных браузерах и поддерживает jQuery 1.7+. Ограничения:
pushState требует сторонней интеграции.Эти особенности важно учитывать при разработке сложных приложений, чтобы избежать проблем с производительностью и пользовательским опытом.