Spec-Zone.ru › Web APIs

ViewTransition

Ограниченное использование

Данная функция не входит в Baseline, так как она не работает в некоторых из самых широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Интерфейс ViewTransition API переходов между представлениями описывает активный переход между представлениями и предоставляет функциональность для реагирования на переход в различные состояния (например, готовность к запуску анимации или завершение анимации) или пропуск перехода.

Этот тип объекта доступен следующим образом:

  • В случае переходов внутри одного документа (SPA) он возвращается методом document.startViewTransition().
  • В случае переходов между разными документами (MPA) он доступен:
    • На выходящей странице через свойство объекта события pageswap PageSwapEvent.viewTransition.
    • На входящей странице через свойство объекта события pagereveal PageRevealEvent.viewTransition.

Когда переход между представлениями инициируется вызовом startViewTransition() (или переходом на другую страницу в случае переходов между разными документами), выполняется последовательность шагов, описанных в Процессе перехода между представлениями. Там же описано, когда выполняются различные промисы.

Свойства экземпляра

ViewTransition.finished Только для чтения

Промис Promise, который выполняется, когда анимация перехода завершена, и новое представление страницы доступно и интерактивно для пользователя.

ViewTransition.ready Только для чтения

Промис Promise, который выполняется, когда псевдоэлементное дерево создано, и анимация перехода собирается начаться.

ViewTransition.updateCallbackDone Только для чтения

Промис Promise, который выполняется, когда промис, возвращаемый обратным вызовом метода document.startViewTransition(), выполняется.

Методы экземпляра

skipTransition()

Пропускает анимационную часть перехода между представлениями, но не пропускает выполнение обратного вызова document.startViewTransition(), который обновляет DOM.

Примеры

В приведенном ниже примере SPA используется промис ViewTransition.ready для запуска пользовательской анимации кругового раскрытия представления, исходящей из позиции курсора пользователя при щелчке, с анимацией, предоставленной API Web Animations API.

// Store the last click event
let lastClick;
addEventListener("click", (event) => (lastClick = event));

function spaNavigate(data) {
  // Fallback for browsers that don't support this API:
  if (!document.startViewTransition) {
    updateTheDOMSomehow(data);
    return;
  }

  // Get the click position, or fallback to the middle of the screen
  const x = lastClick?.clientX ?? innerWidth / 2;
  const y = lastClick?.clientY ?? innerHeight / 2;
  // Get the distance to the furthest corner
  const endRadius = Math.hypot(
    Math.max(x, innerWidth - x),
    Math.max(y, innerHeight - y),
  );

  // Create a transition:
  const transition = document.startViewTransition(() => {
    updateTheDOMSomehow(data);
  });

  // Wait for the pseudo-elements to be created:
  transition.ready.then(() => {
    // Animate the root's new view
    document.documentElement.animate(
      {
        clipPath: [
          `circle(0 at ${x}px ${y}px)`,
          `circle(${endRadius}px at ${x}px ${y}px)`,
        ],
      },
      {
        duration: 500,
        easing: "ease-in",
        // Specify which pseudo-element to animate
        pseudoElement: "::view-transition-new(root)",
      },
    );
  });
}

Для этой анимации также требуется следующий CSS, чтобы отключить стандартную анимацию CSS и остановить смешивание старого и нового состояний представления (новое состояние «накладывается» поверх старого состояния, а не переходит плавно):

::view-transition-image-pair(root) {
  isolation: auto;
}

::view-transition-old(root),
::view-transition-new(root) {
  animation: none;
  mix-blend-mode: normal;
  display: block;
}

Спецификации

Спецификация
Модуль CSS переходов между представлениями уровень 1
# viewtransition

Совместимость браузеров

Десктопные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
ViewTransition 111 111 Нет 97 18 111 Нет 75 18 22.0 111
finished 111 111 Нет 97 18 111 Нет 75 18 22.0 111
ready 111 111 Нет 97 18 111 Нет 75 18 22.0 111
skipTransition 111 111 Нет 97 18 111 Нет 75 18 22.0 111
types 125 125 Нет 111 18.2 125 Нет 83 18.2 27.0 125
updateCallbackDone 111 111 Нет 97 18 111 Нет 75 18 22.0 111

См. также

  • Гладкие переходы с помощью API View Transition

© 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/ViewTransition

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API