Одной из ключевых особенностей библиотек модальных окон является корректное управление фокусом, чтобы обеспечить доступность и удобство использования. Micromodal, несмотря на свою легковесность, предоставляет все необходимые механизмы для этого.
Когда открывается модальное окно, необходимо следить за фокусом. Он должен быть перемещён в модальное окно, чтобы пользователи могли взаимодействовать с элементами внутри. Также важно, чтобы фокус возвращался в прежнее место после закрытия модального окна. Невозможность правильного управления фокусом может привести к проблемам для пользователей, например, для людей с ограниченными возможностями.
Micromodal предоставляет механизм для контроля над фокусом, который можно настроить в зависимости от требований интерфейса.
По умолчанию Micromodal обеспечивает следующее поведение с фокусом:
Для обеспечения максимальной доступности библиотека следит за тем, чтобы фокус не уходил за пределы модального окна, когда оно активно. Это предотвращает «путаницу» фокуса, когда пользователь не может вернуться к интерфейсу за пределами модального окна.
Micromodal предоставляет несколько опций для тонкой настройки поведения фокуса, что позволяет подстраивать его под конкретные нужды приложения.
Focus on open (focusOnOpen) Это свойство позволяет определить, какой элемент получит фокус при открытии модального окна. По умолчанию фокус устанавливается на первый интерактивный элемент, но его можно переназначить. Вариант можно передать через параметр при инициализации модального окна:
const modal = new MicroModal.modal({
target: 'modal-1',
focusOnOpen: 'modal-close-btn', // кнопка закрытия получит фокус
});
В этом примере при открытии модального окна фокус будет перемещен на
кнопку с id modal-close-btn. Это может быть полезно в
случае, если требуется, чтобы именно кнопка закрытия окна была активна
по умолчанию.
Focus on close (focusOnClose) В случае, если
нужно изменить элемент, на который будет возвращён фокус после закрытия
модального окна, можно использовать параметр focusOnClose.
Например:
const modal = new MicroModal.modal({
target: 'modal-1',
focusOnClose: 'back-to-main-button', // фокус вернется на кнопку, которая была активна до открытия окна
});
Этот параметр гарантирует, что фокус вернется на указанную кнопку или другой элемент.
Обработка фокуса вручную Иногда может возникнуть ситуация, когда необходимо вручную контролировать, на каком элементе должен быть фокус при открытии или закрытии модального окна. Для этого можно использовать дополнительные методы библиотеки.
Micromodal позволяет вручную установить фокус с помощью метода
focus() на нужный элемент:
const modal = new MicroModal.modal({
target: 'modal-1',
onShow: (modal) => {
document.querySelector('#modal-input').focus(); // Устанавливаем фокус на элементе input
},
});
В данном примере, когда модальное окно открывается, фокус будет
установлен на элемент #modal-input.
Одной из важных функций для доступности является предотвращение выхода фокуса за пределы модального окна. Когда окно открыто, фокус должен быть ограничен только элементами внутри модального окна, чтобы пользователь не мог случайно фокусировать элементы на странице за его пределами. Micromodal реализует это поведение по умолчанию, но при необходимости его можно отключить.
С помощью параметра trapFocus можно контролировать,
следует ли ограничивать фокус только элементами внутри модального окна.
По умолчанию это поведение включено.
const modal = new MicroModal.modal({
target: 'modal-1',
trapFocus: true, // Включает ограничение фокуса в пределах модального окна
});
При отключении этого параметра фокус может выйти за пределы модального окна, что не рекомендуется с точки зрения доступности.
В более сложных случаях, когда необходимо контролировать как фокус при открытии, так и при закрытии модального окна, можно использовать следующий подход:
const modal = new MicroModal.modal({
target: 'modal-1',
focusOnOpen: 'modal-close-btn', // фокус на кнопке закрытия
focusOnClose: 'main-content', // фокус возвращается на основной контент
trapFocus: true, // фокус ограничен модальным окном
onShow: () => {
console.log('Модальное окно открыто');
},
onClose: () => {
console.log('Модальное окно закрыто');
}
});
Этот код позволяет настроить полный контроль за фокусом и добавить логику для выполнения дополнительных действий при открытии и закрытии модального окна.
Micromodal предоставляет разработчикам мощные инструменты для правильного управления фокусом внутри модальных окон, что важно для обеспечения доступности. Возможности, такие как автоматическое перемещение фокуса при открытии, возвращение фокуса при закрытии и настройка элементов фокуса, делают библиотеку гибкой и удобной для создания интерфейсов, которые соответствуют стандартам доступности.