Featherlight — это минималистичная библиотека для создания модальных
окон на JavaScript. Одним из ключевых методов, обеспечивающих контроль
над поведением модальных окон, является метод close. Он
отвечает за закрытие текущего экземпляра модального окна и корректное
освобождение ресурсов, связанных с ним.
closeМетод close выполняет несколько важных функций
одновременно:
Закрытие модального окна. При вызове
close окно исчезает с экрана, при этом используются
CSS-анимации, если они настроены через опции openSpeed и
closeSpeed.
Очистка DOM. Контент модального окна может быть
динамическим. close гарантирует удаление элементов,
созданных библиотекой, чтобы не оставлять лишних узлов в DOM.
Вызов колбэков. Метод инициирует цепочку
событий, таких как beforeClose и afterClose.
Это позволяет выполнять дополнительную логику до и после закрытия
окна:
beforeClose вызывается перед фактическим
скрытием окна и может быть использован для проверки условий
закрытия.afterClose вызывается после удаления окна из
DOM и завершения всех анимаций.$.featherlight.current().close([event]);
$.featherlight.current() — возвращает текущий открытый
экземпляр модального окна.close([event]) — закрывает окно. Параметр
event является необязательным и может передаваться, если
закрытие инициировано событием, например кликом мыши или нажатием
клавиши.Пример использования:
// Закрытие текущего модального окна
$.featherlight.current().close();
Анимация закрытия Featherlight использует опцию
closeSpeed для определения скорости анимации закрытия.
Значение задается в миллисекундах или как строка 'fast' /
'slow'.
$.featherlight.current().close();
// если closeSpeed = 300, анимация займет 300 мсУсловное закрытие через beforeClose
Метод beforeClose позволяет предотвратить закрытие,
возвращая false:
$.featherlight.current().beforeClose = function(event) {
if (!confirm("Вы уверены, что хотите закрыть окно?")) {
return false; // окно не закроется
}
};События при закрытии
beforeClose — до начала закрытия.afterClose — после полного удаления из DOM и завершения
анимации.$.featherlight.current().afterClose = function() {
console.log("Окно полностью закрыто");
};Метод close можно вызывать не только программно, но и
через встроенные механизмы Featherlight:
Кнопка закрытия Элемент с классом
.featherlight-close автоматически вызывает
close при клике.
Клик вне окна (опция closeOnClick)
Если включена опция closeOnClick: 'background', клик по
затемнённой области вызывает close.
Нажатие клавиши Escape (опция
closeOnEsc) Если closeOnEsc: true,
нажатие клавиши Escape закроет текущее окно.
close// Инициализация модального окна
$.featherlight('<p>Контент модального окна</p>', {
closeSpeed: 400,
beforeClose: function(event) {
console.log("Попытка закрыть окно");
return true;
},
afterClose: function() {
console.log("Окно закрыто и удалено из DOM");
}
});
// Программное закрытие через 3 секунды
setTimeout(function() {
$.featherlight.current().close();
}, 3000);
В этом примере модальное окно автоматически закроется через 3 секунды
после открытия, при этом будет вызвана цепочка колбэков
beforeClose и afterClose.
close вызывается, когда окна нет (текущий
экземпляр не существует), ошибок не возникает — Featherlight просто
игнорирует вызов.close безопасно использовать в асинхронных
сценариях, например после AJAX-запроса, чтобы закрыть окно после
получения данных.Метод close является фундаментальной частью управления
модальными окнами в Featherlight. Его корректное использование позволяет
управлять поведением интерфейса, освобождать ресурсы и выполнять
дополнительные действия при закрытии окна, обеспечивая чистый и
предсказуемый DOM.