Unpoly предоставляет механизм управления слоями интерфейса, позволяя динамически обновлять части страницы без полной перезагрузки. Слой — это изолированный контейнер, который может содержать любой HTML-контент. Слои накладываются друг на друга, создавая иерархию, где верхние слои могут закрывать нижние, но при этом нижние слои сохраняют своё состояние.
Каждый слой идентифицируется up-layer,
который можно получить и управлять через API Unpoly. Слои используются
для модальных окон, всплывающих меню, панелей и динамических областей
контента.
Для работы с текущим активным слоем используется функция:
var layer = up.layer.get();
Этот вызов возвращает объект слоя с ключевыми свойствами:
id — уникальный идентификатор слоя.element — DOM-элемент контейнера слоя.options — объект с настройками слоя (анимация, классы,
фокус и т.д.).parent — ссылка на родительский слой, если такой
существует.Слои могут быть вложенными. Для получения родителя используется:
var parentLayer = layer.parent;
Для доступа к потомкам можно воспользоваться селектором
up.layer.find():
var childLayer = up.layer.find('#child-layer-id');
Это позволяет инспектировать структуру слоев, проверять их состояние и управлять видимостью отдельных компонентов интерфейса.
Каждый слой можно проверить на видимость, используя метод:
var isVisible = layer.isVisible();
Слой может быть скрыт или удален без разрушения родительской структуры. Для закрытия слоя применяется:
layer.close();
При закрытии верхнего слоя автоматически восстанавливается фокус на родительском слое. Для обновления содержимого используется метод:
layer.refresh({ url: '/new-content' });
Этот метод подгружает новый контент через AJAX и обновляет DOM-элемент слоя, сохраняя его позицию и анимацию.
Unpoly позволяет подписываться на события, связанные с жизненным циклом слоя:
up:layer:open — срабатывает при открытии нового
слоя.up:layer:close — при закрытии.up:layer:refresh — при обновлении содержимого.Пример подписки на событие:
up.on('up:layer:open', function(event) {
console.log('Слой открыт:', event.layer.id);
});
События передают объект слоя, что облегчает инспектирование и управление состоянием динамических элементов.
Для глубокого анализа слоев можно использовать встроенные методы Unpoly и инструменты разработчика браузера. Основные подходы:
Просмотр DOM-структуры: все слои имеют атрибут
up-layer, что позволяет легко идентифицировать их в панели
Elements.
Использование консольных команд:
up.layer.getAll().forEach(l => console.log(l.id, l.isVisible()));
Эта команда выводит список всех слоев с указанием их состояния.
Анализ иерархии: через свойства
parent и методы find можно строить дерево
слоев, выявлять зависимые элементы и проверять корректность
вложенности.
Каждый слой создается с набором параметров, которые можно инспектировать:
modal — определяет, является ли слой модальным.cache — сохраняет ли содержимое при закрытии.focus — элемент, который получит фокус при открытии
слоя.animation — настройки анимации входа и выхода
слоя.Пример получения опций:
console.log(layer.options.modal, layer.options.cache);
Изменение опций после создания слоя:
layer.options.cache = false;
Некоторые параметры могут быть изменены динамически для управления поведением интерфейса без перезагрузки страницы.
Каждый слой в Unpoly можно рассматривать как объект с методами для:
Эта структура делает слои мощным инструментом для построения интерактивных и отзывчивых веб-интерфейсов без полной перезагрузки страницы.