Spec-Zone.ru › Web APIs

ViewTransition: свойство ready

Ограниченная доступность

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

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

Чтение-только свойство ready интерфейса ViewTransition — это Promise, которое выполняется после создания псевдоэлементного дерева и начала анимации перехода.

ready отклонится, если переход не может начаться. Это может быть вызвано неправильной конфигурацией, например, дублированными view-transition-name или если обратный вызов, переданный в Document.startViewTransition(), выбрасывает исключение или возвращает отклоняющееся обещание.

Значение

Обещание.

Примеры

В приведенном ниже примере ready используется для запуска пользовательского кругового перехода просмотра, исходящего из положения курсора пользователя при нажатии, с анимацией, предоставляемой 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
# dom-viewtransition-ready

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

Десктоп Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
ready 111 111 Нет 97 18 111 Нет 75 18 22.0 111

См. также

  • Гладкие переходы с API переходов просмотра

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

Spec-Zone.ru

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