Featherlight — лёгкая библиотека для создания модальных окон на JavaScript. Она позволяет открывать разнообразный контент, включая изображения, HTML-фрагменты, AJAX-запросы и iframe. Использование iframe особенно полезно для интеграции стороннего контента, видео с платформ вроде YouTube или сложных страниц без необходимости встраивания их напрямую в DOM.
Для работы с Featherlight требуется подключение CSS и JavaScript библиотек:
<link href="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js"></script>
Важно подключать jQuery перед Featherlight, так как библиотека полностью зависит от него.
Featherlight поддерживает стандартный вызов через атрибут
data-featherlight, указанный на элементе, который открывает
модальное окно. Для iframe используется специальный класс
iframe:
<a href="https://example.com" data-featherlight="iframe">Открыть сайт в iframe</a>
При этом Featherlight автоматически создаёт iframe внутри модального
окна, подставляя указанный URL. По умолчанию размеры окна задаются CSS
свойствами .featherlight-content, но также можно настроить
их через опции.
Для iframe важно задать корректные ширину и
высоту, чтобы контент отображался корректно. Это
делается через опции iframeWidth и
iframeHeight:
$('a[data-featherlight="iframe"]').featherlight({
iframeWidth: 800,
iframeHeight: 600
});
Размеры задаются в пикселях. Featherlight автоматически центрирует окно на экране.
Featherlight позволяет контролировать дополнительные свойства iframe:
auto, yes, no).0 или 1).Пример использования с опциями:
$('a[data-featherlight="iframe"]').featherlight({
iframeWidth: 1024,
iframeHeight: 768,
iframe: {
scrolling: 'auto',
frameborder: 0,
allowfullscreen: true
}
});
URL для iframe можно задавать не только через href, но и
динамически при открытии:
$.featherlight({
iframe: {
src: 'https://example.com',
scrolling: 'no'
},
iframeWidth: 900,
iframeHeight: 500
});
Такой подход удобен, когда адрес страницы зависит от логики приложения или пользовательского ввода.
Featherlight предоставляет несколько событий, которые позволяют отслеживать поведение iframe:
beforeOpen — перед открытием окна.afterOpen — после отображения окна.beforeClose — перед закрытием окна.afterClose — после закрытия окна.Пример использования:
$('a[data-featherlight="iframe"]').featherlight({
iframeWidth: 800,
iframeHeight: 600,
beforeOpen: function(event){
console.log('Модальное окно с iframe готовится к открытию');
},
afterClose: function(event){
console.log('Модальное окно закрыто');
}
});
Эти события позволяют, например, запускать дополнительные функции, отслеживать пользовательскую активность или менять параметры контента в iframe.
По умолчанию Featherlight использует фиксированные размеры для iframe. Для адаптивного дизайна можно задать проценты в CSS:
.featherlight-content iframe {
width: 90vw;
height: 80vh;
}
Использование vw и vh позволяет окну
подстраиваться под размер экрана. При этом Featherlight сохраняет
центрирование модального окна.
При работе с iframe важно учитывать:
Пример безопасного iframe:
$('a[data-featherlight="iframe"]').featherlight({
iframeWidth: 800,
iframeHeight: 600,
iframe: {
sandbox: 'allow-scripts allow-same-origin'
}
});
Использование sandbox минимизирует риски выполнения
нежелательного кода из сторонних источников.
Featherlight обеспечивает лёгкий и гибкий способ интеграции iframe в модальные окна. Возможность задавать размеры, параметры безопасности, события и динамический контент делает библиотеку универсальной для разнообразных веб-приложений. Правильная настройка опций и стилей обеспечивает корректное отображение контента на всех устройствах и платформах.