Библиотека Unpoly предлагает гибкую модель обновления интерфейса через частичные загрузки. Центральной частью этой модели являются Reveal-стратегии — правила, которые управляют тем, как именно браузер будет показывать обновлённый контент при навигации или выполнении действий.
Reveal в Unpoly означает процесс визуального отображения или раскрытия обновлённого фрагмента страницы. Он влияет на восприятие навигации, ощущение получения нового контента и минимизацию отвлекающих переходов.
Основные Reveal-стратегии определяют:
reveal: autoСтратегия по умолчанию. Unpoly автоматически определяет необходимость прокрутки и позиционирования фрагмента. Если обновлённая часть страницы находится вне видимой области, Unpoly прокрутит страницу так, чтобы этот фрагмент стал видимым, но без жесткого выравнивания.
Отличительная черта — адаптивность, ориентированная на минимальное вмешательство в положение пользователя.
reveal: showСтратегия принудительного вывода фрагмента в видимую область. Если обновление проходит «ниже» текущего скролла, Unpoly прокрутит страницу до появления фрагмента, даже если контент ранее был уже почти видим.
Используется там, где важно гарантировать, что обновлённая часть не останется скрытой.
reveal: focusСтратегия, при которой внимание переносится на первый фокусируемый
элемент внутри обновлённого фрагмента. Часто применяется в формах,
диалогах, областях ввода. Если фокусируемого элемента нет, Unpoly ведёт
себя так, как при reveal: show.
Эта модель помогает экономить время пользователя при ввода данных и снижает число лишних кликов.
reveal: topВыравнивает обновлённый фрагмент к верхней границе видимой области. Независимо от текущей позиции скролла, Unpoly перемещает фрагмент так, чтобы его начало располагалось в верхней части окна.
Характерно для контента, где важно фиксированное положение, например при сложных формах или пошаговых интерфейсах.
reveal: coverОбеспечивает максимальное присутствие фрагмента в области просмотра. Unpoly вычисляет границы фрагмента и подстраивает скролл так, чтобы весь фрагмент оказался внутри видимой части окна, если это возможно. В противном случае показывается максимум доступного.
Подходит для элементов, где важно визуальное восприятие целостности: карточек, сообщений об ошибках, описаний.
Для некоторых действий может быть полезно полностью отключить
Reveal-поведение. Через reveal: false обновление происходит
без изменения положения, даже если новый фрагмент оказывается вне
видимости.
Используется в случаях, когда навигация не должна нарушать контекст или когда изменяется лишь микрочасть интерфейса.
Unpoly позволяет сочетать Reveal со стратегиями обновления
(up-target, up-layer) и навигации
(up-follow). Например, для модальных слоёв Reveal зачастую
не требуется, поскольку слой сам управляет восприятием контента.
В случае вложенных действий Reveal может наследоваться или
переопределяться локально атрибутами up-reveal.
Навигация между страницами через up-follow или отправка
форм через up-submit тесно связаны с Reveal. При обновлении
длинных форм Reveal-стратегии помогают автоматически подвести фрагмент к
зоне ошибки или фокуса. Это обеспечивает удобную валидацию и более
плавное взаимодействие.
Unpoly распознаёт системные элементы вроде сообщений об ошибке, информационных блоков, подсказок и может корректировать Reveal-логику в их пользу.
Reveal-стратегии работают независимо от истории браузера, однако слой
(up-layer) влияет на восприятие Reveal. Например:
reveal: focus становится наиболее
естественным;История (up.history.push,
up.history.replace) сохраняет только пользовательский URL и
не влияет на поведение Reveal.
Reveal можно контролировать не только атрибутами, но и программно через вызовы API:
up.render({
target: '.content',
reveal: 'cover',
focus: 'input[name="email"]'
})
Параметр reveal принимает те же значения, что и атрибуты
в HTML, а также допускает false для полного отключения.
Вызов может сочетаться с focus, scroll,
layer и подобными параметрами.
В случаях, когда требуется тонкая настройка, Reveal может быть управляем на основе координат, размеров и состояния элемента после загрузки.
При использовании анимаций Reveal-стратегии вступают в силу после
завершения трансформаций. Это предотвращает скачки интерфейса и
обеспечивает визуальную непрерывность. Например, при
reveal: top фрагмент сначала отрисовывается, затем
происходит прокрутка.
Анимации не отменяют Reveal, но могут модифицировать момент его выполнения.
reveal: auto;reveal: focus;reveal: top или
reveal: auto;reveal: show или
reveal: cover;reveal: false.Эти шаблоны отражают практические приёмы, сложившиеся при многократной интеграции Unpoly в реальные проекты.
Reveal-стратегии формируют характер перемещений по странице, уменьшают когнитивные переключения и обеспечивают непрерывность восприятия. Вместо классической «жёсткой» навигации, где прокрутка всегда начинается сверху, Unpoly создаёт контекстную навигацию, адаптированную к структуре интерфейса.
Это делает Reveal одним из ключевых механизмов, обеспечивающих ощущение «живой» и отзывчивой страницы без тяжёлых SPA-фреймворков.