API переходов между представлениями
API переходов между представлениями предоставляет механизм для лёгкого создания анимированных переходов между различными представлениями веб-сайта. Это включает анимацию между состояниями DOM в одностраничном приложении (SPA) и анимацию навигации между документами в многостраничном приложении (MPA).
Концепции и использование
Переходы между представлениями — популярный дизайн-приём, который снижает когнитивную нагрузку на пользователя, помогает ему оставаться в контексте и уменьшает ощущаемую задержку при переходе между состояниями или представлениями приложения.
Однако создание переходов между представлениями в веб-среде исторически было затруднено:
- Переходы между состояниями в одностраничных приложениях (SPA) обычно требуют значительных усилий по написанию CSS и JavaScript для:
- Обработки загрузки и позиционирования старого и нового содержимого.
- Анимации старого и нового состояний для создания перехода.
- Предотвращения случайных пользовательских взаимодействий со старым содержимым, которые могут вызвать проблемы.
- Удаления старого содержимого после завершения перехода. Проблемы с доступностью, такие как потеря позиции чтения, путаница с фокусом и странное поведение объявления области реального времени, также могут возникнуть из-за одновременного присутствия нового и старого содержимого в DOM.
- Переходы между представлениями разных документов (то есть между страницами в многостраничных приложениях (MPA)) исторически были невозможны.
API переходов между представлениями предоставляет простой способ обработки необходимых изменений представлений и анимации переходов для обоих вышеперечисленных случаев.
Создание перехода между представлениями, использующего стандартную анимацию браузера, очень быстро. Существуют возможности для настройки анимации перехода и управления самим переходом (например, указание условий, при которых анимация пропускается), как для переходов между представлениями SPA, так и MPA.
См. Использование API переходов между представлениями для получения дополнительной информации.
Интерфейсы
ViewTransition-
Представляет переход между представлениями и предоставляет функциональность для реакции на переход в различные состояния (например, готовность к запуску анимации или завершение анимации) или пропуск перехода.
Расширения других интерфейсов
Document.startViewTransition()-
Запускает новый переход между представлениями одного документа (SPA) и возвращает объект
ViewTransitionдля его представления. PageRevealEvent-
Объект события для события
pagereveal. Во время навигации между документами он позволяет изменять связанный переход между представлениями (предоставляя доступ к соответствующему объектуViewTransition) из документа, в который происходит навигация, если навигация инициировала переход между представлениями. PageSwapEvent-
Объект события для события
pageswap. Во время навигации между документами он позволяет изменять связанный переход между представлениями (предоставляя доступ к соответствующему объектуViewTransition) из документа, из которого происходит навигация, если навигация инициировала переход между представлениями. Он также предоставляет доступ к информации о типе навигации и текущим и целевым записям истории документа. - Событие
Windowpagereveal -
Срабатывает при первом рендеринге документа, будь то загрузка нового документа из сети или активация документа (либо из кэша назад/вперед (bfcache), либо из кэша предварительной отрисовки).
- Событие
Windowpageswap -
Срабатывает, когда документ собирается быть загружен из-за навигации.
Дополнения к HTML
<link rel="expect">-
Определяет наиболее важное содержимое в связанном документе для начального просмотра страницы пользователем. Рендеринг документа будет заблокирован до тех пор, пока не будет обработано критическое содержимое, обеспечивая согласованную первую отрисовку — и, следовательно, переход между представлениями — во всех поддерживающих браузерах.
Дополнения к CSS
Правила
@view-transition-
В случае навигации между документами
@view-transitionиспользуется для включения перехода между представлениями текущего и целевого документов.
Свойства
view-transition-name-
Предоставляет выбранному элементу отдельное идентификационное имя и заставляет его участвовать в отдельном переходе между представлениями от корневого перехода — или в отсутствие перехода между представлениями, если указано значение
none.
Псевдоэлементы
::view-transition-
Корень перекрытия переходов между представлениями, содержащий все переходы и находящийся поверх всего остального содержимого страницы.
::view-transition-group()-
Корень одного перехода между представлениями.
::view-transition-image-pair()-
Контейнер для старого и нового представлений перехода между представлениями — до и после перехода.
::view-transition-old()-
Статичный снимок старого представления до перехода.
::view-transition-new()-
Актуальное представление нового представления после перехода.
Примеры
- Демо SPA переходов между представлениями: Демонстрация галереи изображений с переходами между представлениями, содержащая отдельную анимацию старых и новых изображений и старых и новых подписей.
- Демо MPA переходов между представлениями: Пример сайта из двух страниц, демонстрирующий использование переходов между представлениями разных документов (MPA), предоставляющий пользовательский переход «свайп вверх» при переходе между страницами.
- HTTP 203 плейлист: Демонстрация приложения видеоплеера, содержащего несколько различных переходов между представлениями SPA, многие из которых объяснены в Гладкие переходы с помощью API переходов между представлениями.
-
Список членов команды Chrome DevRel: Пример приложения профильных страниц, демонстрирующий, как использовать события
pagerevealиpageswapдля настройки исходящей и входящей анимации перехода между представлениями разных документов на основе URL «от» и «в».
Спецификации
| Спецификация |
|---|
| CSS Модуль переходов между представлениями Уровень 1 |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
View_Transition_API |
126 | 126 | Нет | 112 | 18.2 | 126 | Нет | 83 | 18.2 | Нет | 126 |
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
View_Transition_API |
111 | 111 | Нет | 97 | 18 | 111 | Нет | 75 | 18 | 22.0 | 111 |
api.Document.startViewTransition
Таблицы совместимости отображаются только в браузере
css.at-rules.view-transition
Таблицы совместимости отображаются только в браузере
См. также
- Гладкие переходы с помощью API View Transition на developer.chrome.com (2024)
- API View Transition: Создание плавных переходов между страницами на stackdiary.com (2023)
- API View Transitions: Одностраничные приложения без фреймворка на www.debugbear.com (2024)
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API