Featherlight — это лёгкая библиотека для создания модальных окон (lightbox) на веб-страницах, написанная на чистом JavaScript с использованием jQuery. Основной принцип работы — динамическое создание и управление всплывающими окнами с контентом, включая изображения, HTML-блоки и AJAX-запросы. Одной из ключевых задач при использовании Featherlight является обеспечение доступности (accessibility), особенно для пользователей, использующих экранные читалки или навигацию с клавиатуры.
Для корректной работы модальных окон с изображениями важна поддержка
атрибута alt. Featherlight автоматически не подставляет
альтернативный текст — это обязанность разработчика. В HTML-разметке
необходимо указывать alt для всех изображений:
<a href="large-image.jpg" data-featherlight="image">
<img src="thumbnail.jpg" alt="Описание изображения">
</a>
Если alt отсутствует, экранные читалки не смогут
передать смысл содержимого пользователю. При загрузке изображения в
модальном окне Featherlight подтягивает оригинальный элемент, поэтому
alt сохраняется автоматически.
ARIA (Accessible Rich Internet Applications) позволяет повысить доступность динамического контента. Featherlight может быть интегрирован с ARIA следующим образом:
role="dialog" — указывает, что
модальное окно является диалоговым окном.aria-modal="true" — информирует, что
фоновые элементы временно недоступны для взаимодействия.aria-labelledby — связывает окно с
заголовком, который описывает его содержание.aria-describedby — при необходимости
указывает на элемент с дополнительным описанием.Пример структуры:
<div id="modal-content" role="dialog" aria-modal="true" aria-labelledby="modal-title" aria-describedby="modal-desc">
<h2 id="modal-title">Заголовок модального окна</h2>
<p id="modal-desc">Подробное описание содержимого окна</p>
<img src="example.jpg" alt="Подробное описание изображения">
</div>
Инициализация через Featherlight:
$('#trigger').featherlight('#modal-content');
Для пользователей клавиатуры важно, чтобы фокус перемещался внутрь модального окна при его открытии и возвращался к исходному элементу при закрытии. Featherlight поддерживает простую настройку фокусировки:
$.featherlight.defaults.afterOpen = function() {
$(this.$instance).find('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])').first().focus();
};
$.featherlight.defaults.afterClose = function() {
$('#trigger').focus();
};
Кроме того, закрытие окна должно быть доступно через клавишу Esc, что встроено в стандартные возможности библиотеки.
Если изображение несет важную смысловую нагрузку, альтернативой может быть текстовая версия содержимого:
<a href="#text-lightbox" data-featherlight="inline">
Показать информацию
</a>
<div id="text-lightbox" style="display:none;">
<p>Подробное текстовое описание содержимого, заменяющее графический элемент.</p>
</div>
Это особенно полезно, когда необходимо полностью исключить визуальный контент, сохранив доступность информации.
Featherlight поддерживает загрузку контента через AJAX. В этом случае
необходимо убедиться, что все изображения и элементы содержат корректные
alt и ARIA-атрибуты:
$('a.ajax-trigger').featherlight({
ajax: 'content.html',
afterContent: function() {
$(this.$content).find('img').each(function() {
if (!$(this).attr('alt')) {
$(this).attr('alt', 'Описание изображения');
}
});
}
});
Анимации в модальных окнах могут снижать доступность, если они слишком длинные или отвлекают внимание. Рекомендуется использовать короткие переходы или отключать их для пользователей с особыми потребностями:
$.featherlight.defaults.openSpeed = 100; // миллисекунды
$.featherlight.defaults.closeSpeed = 100;
Также возможна интеграция с CSS медиа-запросами, чтобы полностью отключить анимацию при настройках системы “reduced motion”.
Featherlight корректно работает с экранными читалками при условии:
alt для изображений;Эти меры гарантируют, что всплывающие окна не блокируют доступ к основной информации страницы и остаются понятными для всех категорий пользователей.
alt для изображений.role="dialog",
aria-modal, aria-labelledby,
aria-describedby.Эти принципы обеспечивают максимальную совместимость Featherlight с современными требованиями к доступности и позволяют создавать модальные окна, которые будут полезны всем пользователям, независимо от способа взаимодействия с сайтом.