scroll()
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментальное: Это экспериментальная технология.
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости браузеров.
Функция scroll() CSS может использоваться с animation-timeline, чтобы указать элемент с возможностью прокрутки (прокручиватель) и ось полосы прокрутки, которая предоставит анонимную временную шкалу прогресса прокрутки для анимации текущего элемента. Временная шкала прогресса прокрутки прогрессирует путем прокрутки прокручивателя между верхней и нижней (или левой и правой) границами. Положение в диапазоне прокрутки преобразуется в процент прогресса — 0% в начале и 100% в конце.
Примечание: Если указанная ось не содержит полосы прокрутки, то временная шкала анимации будет неактивной (с нулевым прогрессом).
Примечание: Каждое использование scroll() соответствует своему уникальному экземпляру ScrollTimeline в API веб-анимаций.
Синтаксис
/* Function with no parameters set */ animation-timeline: scroll(); /* Values for selecting the scroller element */ animation-timeline: scroll(nearest); /* Default */ animation-timeline: scroll(root); animation-timeline: scroll(self); /* Values for selecting the axis */ animation-timeline: scroll(block); /* Default */ animation-timeline: scroll(inline); animation-timeline: scroll(y); animation-timeline: scroll(x); /* Examples that specify scroller and axis */ animation-timeline: scroll(block nearest); /* Default */ animation-timeline: scroll(inline root); animation-timeline: scroll(x self);
Параметры
- scroller
-
Значение для указания элемента прокрутки, который предоставит временную шкалу прогресса прокрутки, может быть одним из следующих:
- axis
-
Значение оси полосы прокрутки может быть одним из следующих:
block-
Полоса прокрутки на оси блока контейнера прокрутки, которая является осью, перпендикулярной направлению потока текста в строке. Для горизонтальных режимов написания, таких как стандартный английский, это то же самое, что и
y, а для вертикальных режимов написания — то же самое, что иx. Это значение по умолчанию. inline-
Полоса прокрутки на оси вставки контейнера прокрутки, которая является осью, параллельной направлению потока текста в строке. Для горизонтальных режимов написания это то же самое, что и
x, а для вертикальных режимов написания — то же самое, что иy. y-
Полоса прокрутки по вертикальной оси контейнера прокрутки.
x-
Полоса прокрутки по горизонтальной оси контейнера прокрутки.
Примечание: Значения scroller и axis могут быть указаны в любом порядке.
Формальный синтаксис
Примеры
Установка анонимной временной шкалы прогресса прокрутки
В этом примере элемент #square анимируется с помощью анонимной временной шкалы прогресса прокрутки, которая применяется к элементу, который нужно анимировать, с помощью функции scroll(). Временная шкала в этом конкретном примере предоставляется ближайшим родительским элементом, имеющим (любую) полосу прокрутки, из полосы прокрутки по направлению блока.
HTML
HTML для примера представлен ниже.
<div id="container"> <div id="square"></div> <div id="stretcher"></div> </div>
CSS
Приведенный ниже CSS определяет квадрат, который вращается в разных направлениях в соответствии со временной шкалой, предоставленной свойством animation-timeline. В этом случае временная шкала предоставляется scroll(block nearest), что означает, что будет выбрана полоса прокрутки по направлению блока ближайшего родительского элемента, у которого есть полосы прокрутки; в этом случае вертикальная полоса прокрутки элемента «container».
Примечание: block и nearest фактически являются значениями параметров по умолчанию, поэтому мы могли бы использовать просто scroll().
#square {
background-color: deeppink;
width: 100px;
height: 100px;
margin-top: 100px;
position: absolute;
bottom: 0;
animation-name: rotateAnimation;
animation-duration: 1ms; /* Firefox requires this to apply the animation */
animation-direction: alternate;
animation-timeline: scroll(block nearest);
}
@keyframes rotateAnimation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
CSS для контейнера устанавливает его высоту в 300px, и мы также устанавливаем контейнер так, чтобы он создавал вертикальную полосу прокрутки, если он переполнен. CSS для элемента «stretcher» устанавливает высоту блока в 600px, что вынуждает элемент контейнера переполняться. Эти два вместе гарантируют, что контейнер имеет вертикальную полосу прокрутки, что позволяет использовать его в качестве источника анонимной временной шкалы прогресса прокрутки.
#container {
height: 300px;
overflow-y: scroll;
position: relative;
}
#stretcher {
height: 600px;
}
Результат
Прокрутите, чтобы увидеть, как элемент квадрата анимируется.
Спецификации
| Спецификация |
|---|
| Анимации, управляемые прокруткой # scroll-notation |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
scroll |
115 | 115 | 110["Диапазон нулевой прокрутки обрабатывается как 100%, но должен быть 0% (см. ошибку 1780865).", "Поддерживает устаревшие значения осиhorizontal и vertical, а не x и y."] |
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/CSS/animation-timeline/scroll