Featherlight — лёгкая библиотека для реализации модальных окон в
JavaScript. Основной файл подключается через <script>
или с использованием модульной системы. Для корректной работы требуется
jQuery, так как Featherlight строится на его методах.
<link href="featherlight.min.css" rel="stylesheet">
<script src="jquery.min.js"></script>
<script src="featherlight.min.js"></script>
Модальное окно создаётся простым вызовом:
$.featherlight('<p>Содержимое окна</p>');
Этот минимальный пример демонстрирует принцип работы: Featherlight создаёт обёртку вокруг содержимого, добавляет фон и анимацию, полностью управляя отображением модального окна.
Featherlight поддерживает гибкую конфигурацию через объект опций:
$.featherlight('<p>Содержимое окна</p>', {
closeOnClick: 'background', // Закрытие при клике на фон
closeIcon: '✖', // Пользовательский значок закрытия
openSpeed: 300, // Скорость открытия в миллисекундах
closeSpeed: 300 // Скорость закрытия
});
Ключевые моменты:
closeOnClick может принимать 'background',
'anywhere' или false.closeIcon позволяет использовать любой HTML или символ
Unicode.openSpeed и closeSpeed управляют анимацией
плавного появления и скрытия окна.Featherlight позволяет открывать модальные окна, ссылаясь на существующий элемент DOM. Это сокращает дублирование кода и облегчает управление содержимым:
<div id="myContent" style="display:none;">
<h2>Заголовок окна</h2>
<p>Текст внутри модального окна.</p>
</div>
<a href="#" data-featherlight="#myContent">Открыть окно</a>
В этом примере Featherlight клонирует содержимое элемента
#myContent и отображает его в модальном окне.
Featherlight поддерживает AJAX-загрузку контента, что особенно важно для оптимизации ресурсов. Вместо того чтобы загружать весь HTML сразу, можно подтягивать данные по мере необходимости:
$.featherlight({
ajax: '/path/to/content.html',
loading: 'Загрузка...'
});
Принципы оптимизации при AJAX:
loading) для
улучшения UX.Для галерей и больших изображений важно откладывать загрузку до открытия модального окна:
<a href="large-image.jpg" data-featherlight="image">
<img src="thumbnail.jpg" alt="Миниатюра">
</a>
Особенности работы с изображениями:
href.Featherlight поддерживает расширение базового функционала через наследование:
var MyLightbox = $.featherlight.extend({
open: function(event){
console.log('Окно открыто');
this._super(event); // Вызов стандартного метода открытия
},
afterClose: function(){
console.log('Окно закрыто');
}
});
$('#openCustom').featherlight(MyLightbox);
Важные моменты:
_super позволяют не терять стандартную
логику.beforeOpen, afterOpen,
beforeClose, afterClose дают полный контроль
над жизненным циклом модального окна.ajax для динамического подгружания контента и изображений
по требованию.Featherlight поддерживает кастомные анимации через CSS-классы. Пример плавного появления:
.featherlight {
opacity: 0;
transition: opacity 0.5s ease;
}
.featherlight.featherlight-opened {
opacity: 1;
}
В JavaScript можно регулировать скорость через опции
openSpeed и closeSpeed. Такая комбинация CSS и
JS позволяет оптимизировать производительность и уменьшить нагрузку на
рендеринг страницы.
Featherlight умеет управлять несколькими окнами одновременно:
$.featherlight('<p>Первое окно</p>');
$.featherlight('<p>Второе окно</p>');
persist, чтобы контент сохранялся
между открытиями.Featherlight легко комбинируется с другими плагинами jQuery, например, с слайдерами или формами:
$('#openForm').featherlight({
afterOpen: function(){
$('#myForm').validate(); // Инициализация валидации формы
}
});
Это позволяет создавать комплексные интерфейсы, не загружая лишние ресурсы до момента взаимодействия пользователя.