Открытие и закрытие

Micromodal предоставляет простое и гибкое API для создания модальных окон с минимальным количеством кода и без зависимости от крупных библиотек. Основные операции, которые предоставляет эта библиотека, — это открытие и закрытие модальных окон. Рассмотрим, как правильно работать с этими функциями.

Открытие модального окна

Для того чтобы открыть модальное окно, необходимо использовать метод Micromodal.show(). Этот метод принимает один параметр — идентификатор модального окна (его id), который указывается в HTML-структуре. Рассмотрим пример:

<!-- Структура модального окна -->
<div class="modal" id="modal-1">
  <div class="modal__overlay" data-micromodal-close>
    <div class="modal__container">
      <button class="modal__close" data-micromodal-close>Закрыть</button>
      <div class="modal__content">
        <!-- Контент модального окна -->
      </div>
    </div>
  </div>
</div>

Для открытия модального окна с идентификатором modal-1 необходимо вызвать метод Micromodal.show() следующим образом:

Micromodal.show('modal-1');

Метод show() позволяет не только отобразить модальное окно, но и автоматически активировать его анимацию, если она предусмотрена. Модальное окно будет видно на экране, а его фон будет затемнён.

Кроме того, можно добавлять дополнительные параметры, такие как время анимации и выбор поведения окна, но по умолчанию всё работает с минимальными настройками.

Параметры метода show

Метод show может принимать не только идентификатор модального окна, но и объект с дополнительными настройками. Пример:

Micromodal.show('modal-1', {
  disableScroll: true,  // отключение прокрутки страницы при открытом окне
  disableFocus: true,   // отключение фокуса на модальном окне
  awaitCloseAnimation: true, // ожидание завершения анимации закрытия
});
  • disableScroll — если установлено в true, прокрутка страницы будет заблокирована до закрытия модального окна.
  • disableFocus — если установлено в true, фокус на модальном окне не будет установлен по умолчанию.
  • awaitCloseAnimation — если установлено в true, библиотека будет ожидать завершения анимации закрытия перед выполнением дальнейших операций.

Закрытие модального окна

Закрытие модального окна осуществляется с помощью метода Micromodal.close(). Он принимает идентификатор окна, которое необходимо закрыть. Пример:

Micromodal.close('modal-1');

Этот метод вызывает закрытие модального окна, возвращая интерфейс в исходное состояние. Также поддерживаются дополнительные параметры, аналогичные тем, что есть при открытии модального окна:

Micromodal.close('modal-1', {
  disableScroll: true,  // блокировка прокрутки страницы
  awaitOpenAnimation: true,  // ожидание анимации открытия перед выполнением закрытия
});
  • awaitOpenAnimation — если установлено в true, библиотека будет ожидать завершения анимации открытия перед закрытием.

Обработка закрытия через интерфейс

Библиотека автоматически добавляет обработчики событий для закрытия модальных окон. Например, по умолчанию в коде будет поддерживаться закрытие модального окна при нажатии на фон или кнопки с атрибутом data-micromodal-close:

<button class="modal__close" data-micromodal-close>Закрыть</button>

Для более точной настройки можно вручную указать обработчики событий, если требуется более сложная логика закрытия, например, с анимациями или специфическими проверками.

Автоматическое закрытие при нажатии на фон

Micromodal по умолчанию позволяет закрыть модальное окно, если пользователь нажимает на фон (элемент с классом modal__overlay). Это поведение можно изменить, установив параметр closeOnClick в false:

Micromodal.show('modal-1', {
  closeOnClick: false, // отключение закрытия по клику на фон
});

Управление состоянием модального окна

Открытие и закрытие модальных окон в Micromodal также может быть связано с состоянием элементов интерфейса. Например, можно использовать методы библиотеки для динамического управления открытием и закрытием окон в зависимости от условий:

if (userIsLoggedIn) {
  Micromodal.show('welcome-modal');
} else {
  Micromodal.show('login-modal');
}

Такой подход позволяет интегрировать библиотеку в более сложные веб-приложения, где логика отображения окон зависит от состояния пользователя или других данных.

Заключение

Открытие и закрытие модальных окон с помощью Micromodal — это простая и гибкая операция. Она позволяет эффективно управлять окнами, минимизируя необходимость написания большого объема кода и предоставляя разработчику удобный интерфейс для реализации стандартных сценариев работы с модальными окнами, таких как закрытие по клику на фон, анимации и блокировка прокрутки страницы.