Spec-Zone.ru › CSS

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

Значение для указания элемента прокрутки, который предоставит временную шкалу прогресса прокрутки, может быть одним из следующих:

nearest

Ближайший предок текущего элемента, у которого есть полосы прокрутки по любой оси. Это значение по умолчанию.

root

Корневой элемент документа.

self

Сам текущий элемент.

axis

Значение оси полосы прокрутки может быть одним из следующих:

block

Полоса прокрутки на оси блока контейнера прокрутки, которая является осью, перпендикулярной направлению потока текста в строке. Для горизонтальных режимов написания, таких как стандартный английский, это то же самое, что и y, а для вертикальных режимов написания — то же самое, что и x. Это значение по умолчанию.

inline

Полоса прокрутки на оси вставки контейнера прокрутки, которая является осью, параллельной направлению потока текста в строке. Для горизонтальных режимов написания это то же самое, что и x, а для вертикальных режимов написания — то же самое, что и y.

y

Полоса прокрутки по вертикальной оси контейнера прокрутки.

x

Полоса прокрутки по горизонтальной оси контейнера прокрутки.

Примечание: Значения scroller и axis могут быть указаны в любом порядке.

Формальный синтаксис

<scroll()> = 
scroll( [ <scroller> || <axis> ]? )

<scroller> =
root |
nearest |
self

<axis> =
block |
inline |
x |
y

Примеры

Установка анонимной временной шкалы прогресса прокрутки

В этом примере элемент #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

См. также

  • Анимации, управляемые прокруткой CSS
  • Использование CSS-анимаций
  • animation-timeline

© 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

Spec-Zone.ru

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