ViewTimeline
Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из самых распространённых браузеров.
Экспериментально: Это экспериментальная технология .
Перед использованием в продакшене тщательно ознакомьтесь со таблицей совместимости браузеров.
Интерфейс ViewTimeline API анимации веб-страниц представляет временную шкалу прогресса просмотра (см. CSS-анимации, управляемые прокруткой для получения дополнительной информации).
Передайте экземпляр ViewTimeline конструктору Animation() или методу animate(), чтобы указать его как временную шкалу, которая будет управлять прогрессом анимации.
Конструктор
-
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}.`;
Результат
Прокрутите, чтобы увидеть анимированный элемент-субъект.
Спецификации
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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