Spec-Zone.ru › Web APIs

ViewTimeline

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

Эта функция не является базовой, так как она не работает в некоторых из самых распространённых браузеров.

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

Экспериментально: Это экспериментальная технология .
Перед использованием в продакшене тщательно ознакомьтесь со таблицей совместимости браузеров.

Интерфейс ViewTimeline API анимации веб-страниц представляет временную шкалу прогресса просмотра (см. CSS-анимации, управляемые прокруткой для получения дополнительной информации).

Передайте экземпляр ViewTimeline конструктору Animation() или методу animate(), чтобы указать его как временную шкалу, которая будет управлять прогрессом анимации.

AnimationTimeline ScrollTimeline ViewTimeline

Конструктор

ViewTimeline() Экспериментально

Создаёт новый экземпляр объекта ViewTimeline.

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

Этот интерфейс также наследует свойства своего родителя, ScrollTimeline.

subject Только для чтения Экспериментально

Возвращает ссылку на элемент-субъект, видимость которого в ближайшем предке-элементе со скроллингом (скроллер) определяет прогресс временной шкалы и, следовательно, анимацию.

startOffset Только для чтения Экспериментально

Возвращает CSSNumericValue, представляющий начальную (0% прогресс) позицию прокрутки временной шкалы как смещение от начала области переполнения содержимого в скроллере.

endOffset Только для чтения Экспериментально

Возвращает CSSNumericValue, представляющий конечную (100% прогресс) позицию прокрутки временной шкалы как смещение от начала области переполнения содержимого в скроллере.

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

Этот интерфейс наследует методы своего родителя, ScrollTimeline.

Примеры

Отображение субъекта и смещений временной шкалы прогресса просмотра

В этом примере мы анимируем элемент с class subject вдоль временной шкалы прогресса просмотра — он анимируется при перемещении вверх по документу при прокрутке. Мы также выводим значения subject, startOffset, и endOffset в элемент вывода в верхнем правом углу.

HTML

HTML для примера показан ниже.

<div class="content">
  <h1>Content</h1>

  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Risus quis varius quam
    quisque id. Et ligula ullamcorper malesuada proin libero nunc consequat
    interdum varius. Elit ullamcorper dignissim cras tincidunt lobortis feugiat
    vivamus at augue.
  </p>

  <p>
    Dolor sed viverra ipsum nunc aliquet. Sed risus pretium quam vulputate
    dignissim. Tortor aliquam nulla facilisi cras. A erat nam at lectus urna
    duis convallis convallis. Nibh ipsum consequat nisl vel pretium lectus.
    Sagittis aliquam malesuada bibendum arcu vitae elementum. Malesuada bibendum
    arcu vitae elementum curabitur vitae nunc sed velit.
  </p>

  <div class="subject animation"></div>

  <p>
    Adipiscing enim eu turpis egestas pretium aenean pharetra magna ac. Arcu
    cursus vitae congue mauris rhoncus aenean vel. Sit amet cursus sit amet
    dictum. Augue neque gravida in fermentum et. Gravida rutrum quisque non
    tellus orci ac auctor augue mauris. Risus quis varius quam quisque id diam
    vel quam elementum. Nibh praesent tristique magna sit amet purus gravida
    quis. Duis ultricies lacus sed turpis tincidunt id aliquet. In egestas erat
    imperdiet sed euismod nisi. Eget egestas purus viverra accumsan in nisl nisi
    scelerisque. Netus et malesuada fames ac.
  </p>

  <div class="output"></div>
</div>

CSS

CSS для примера выглядит следующим образом:

.subject {
  width: 300px;
  height: 200px;
  margin: 0 auto;
  background-color: deeppink;
}

.content {
  width: 75%;
  max-width: 800px;
  margin: 0 auto;
}

.output {
  position: fixed;
  top: 5px;
  right: 5px;
}

p,
h1,
div {
  font-family: Arial, Helvetica, sans-serif;
}

h1 {
  font-size: 3rem;
}

p {
  font-size: 1.5rem;
  line-height: 1.5;
}

JavaScript

В JavaScript мы получаем ссылки на subject и output <div>ы, затем создаём новый ViewTimeline, связывая его с элементом subject, чтобы указать, что прогресс временной шкалы основан на видимости этого элемента через его предка со скроллингом, устанавливая ось block, и устанавливая значения inset для изменения положения области, в которой считается видимым субъект.

Затем мы анимируем элемент subject с помощью API анимации веб-страниц. И наконец, мы отображаем значения subject, startOffset, и endOffset в элементе output.

const subject = document.querySelector(".subject");
const output = document.querySelector(".output");

const timeline = new ViewTimeline({
  subject,
  axis: "block",
  inset: [CSS.px("200"), CSS.px("300")],
});

subject.animate(
  {
    opacity: [0, 1],
    transform: ["scaleX(0)", "scaleX(1)"],
  },
  {
    fill: "both",
    timeline,
  },
);

output.textContent += `Subject element: ${timeline.subject.nodeName}, `;
output.textContent += `start offset: ${timeline.startOffset}, `;
output.textContent += `end offset: ${timeline.endOffset}.`;

Результат

Прокрутите, чтобы увидеть анимированный элемент-субъект.

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

Спецификация
Анимации, управляемые прокруткой
# viewtimeline-interface

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
ViewTimeline 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
ViewTimeline 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
endOffset 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
startOffset 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
subject 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115

См. также

  • API анимации веб-страниц
  • CSS-анимации, управляемые прокруткой
  • AnimationTimeline, ScrollTimeline

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

Spec-Zone.ru

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