Featherlight — лёгкая библиотека для создания модальных окон в веб-приложениях. Она отличается минималистичностью, высокой производительностью и гибкостью настройки. Featherlight позволяет быстро интегрировать всплывающие окна без сложного JavaScript-кода, сохраняя при этом контроль над поведением модального окна и его стилями.
Для работы с Featherlight необходимы jQuery и собственный скрипт библиотеки. Минимальный набор подключений выглядит так:
<link href="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js"></script>
CSS-файл отвечает за визуальное оформление окна, а JS-файл — за поведение, события и управление открытием/закрытием.
Для базового всплывающего окна достаточно использовать HTML-атрибут
data-featherlight:
<a href="#lightbox-content" data-featherlight="#lightbox-content">Открыть окно</a>
<div id="lightbox-content" style="display: none;">
<p>Содержимое модального окна</p>
</div>
Featherlight автоматически найдёт целевой элемент и покажет его в
модальном окне при клике на ссылку. Ключевой момент: исходный
элемент должен быть скрыт через display: none;,
чтобы при инициализации не отображался на странице.
Featherlight использует собственные CSS-классы, позволяющие настраивать внешний вид модального окна:
.featherlight — основной контейнер модального
окна..featherlight-content — блок с содержимым..featherlight-close — кнопка закрытия окна..featherlight-overlay — затемнённый фон, блокирующий
взаимодействие с остальной страницей.Пример базового стиля:
.featherlight {
background: #ffffff;
border-radius: 8px;
padding: 20px;
max-width: 600px;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}
.featherlight-overlay {
background: rgba(0, 0, 0, 0.6);
}
.featherlight-close {
position: absolute;
top: 10px;
right: 10px;
font-size: 20px;
color: #333;
cursor: pointer;
}
Стили можно адаптировать под дизайн страницы, изменяя цвет, размеры, отступы и анимацию.
Featherlight предоставляет набор опций, позволяющих управлять поведением окна:
variant — добавляет кастомный CSS-класс к окну, чтобы
использовать отдельные стили.closeIcon — символ или HTML для кнопки закрытия.closeOnClick — управление закрытием при клике на фон
('anywhere', 'background',
'false').openSpeed и closeSpeed — скорость анимации
открытия и закрытия.beforeOpen, afterOpen,
beforeClose, afterClose — функции обратного
вызова для добавления логики при открытии и закрытии.Пример использования опций:
$('#open-lightbox').featherlight('#lightbox-content', {
variant: 'custom-lightbox',
closeOnClick: 'background',
openSpeed: 300,
closeSpeed: 200,
afterOpen: function() {
console.log('Окно открыто');
}
});
Featherlight позволяет использовать разные типы контента:
Пример AJAX-загрузки:
$.featherlight({
ajax: '/content/modal.html',
variant: 'ajax-lightbox'
});
AJAX-контент подгружается динамически, при этом стили и анимации остаются одинаковыми для всех типов окон.
Featherlight поддерживает события жизненного цикла, позволяющие выполнять код в определённый момент:
beforeOpen — до начала анимации открытия.afterOpen — после завершения анимации.beforeClose — до начала закрытия.afterClose — после полного закрытия окна.Пример регистрации событий:
$(document).on('featherlight:opened', function(event){
console.log('Модальное окно полностью открыто');
});
$(document).on('featherlight:closed', function(event){
console.log('Модальное окно закрыто');
});
Featherlight автоматически центрирует окно и масштабирует содержимое под размеры экрана. Для адаптивного дизайна достаточно настроить CSS:
.featherlight {
width: 90%;
max-width: 500px;
margin: auto;
}
.featherlight img {
max-width: 100%;
height: auto;
}
Библиотека корректно работает на мобильных устройствах, поддерживая тач-события и динамическую подгонку размеров.
Featherlight можно использовать вместе с CSS-анимациями для плавного появления окна:
@keyframes fadeIn {
from { opacity: 0; transform: scale(0.9); }
to { opacity: 1; transform: scale(1); }
}
.featherlight.custom-lightbox {
animation: fadeIn 0.3s ease-out;
}
Опция variant позволяет применять разные анимации для
разных окон.
.featherlight для оформления контейнера и
.featherlight-content для внутреннего контента..featherlight-overlay для затемнения фона и
.featherlight-close для видимой кнопки закрытия.variant для создания уникальных стилей для
отдельных окон.Эти принципы позволяют строить модальные окна, которые легко интегрируются в любой интерфейс и обеспечивают контролируемый пользовательский опыт.