scroll-timeline
Ограниченная доступность
Эта функция не является Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Перед использованием в производственной среде внимательно ознакомьтесь с таблицей совместимости с браузерами.
Свойство scroll-timeline CSS краткое свойство используется для определения именного временного отсчёта прогресса прокрутки, который прогрессирует при прокрутке элемента прокрутки (scroller) между верхним и нижним (или левым и правым) краями. scroll-timeline задаётся на элементе прокрутки, который обеспечит временной отсчёт. Начальная позиция прокрутки соответствует 0% прогресса, а конечная позиция прокрутки — 100% прогресса. Если позиции 0% и 100% совпадают (т. е. у контейнера прокрутки нет области для прокрутки), временной отсчёт неактивен.
scroll-timeline может содержать два составляющих значения — имя именного временного отсчёта прогресса прокрутки и необязательное значение оси прокрутки.
Затем имя используется в объявлении animation-timeline для указания элемента контейнера, который используется для управления прогрессом анимации посредством действия прокрутки.
Примечание: Если элемент прокрутки не выходит за пределы своего контейнера по выбранной оси или переполнение скрыто или обрезано, временной отсчёт не будет создан.
Составные свойства
Это свойство является сокращённым для следующих свойств CSS:
Синтаксис
/* two values: one each for scroll-timeline-name and scroll-timeline-axis */ scroll-timeline: --custom_name_for_timeline block; scroll-timeline: --custom_name_for_timeline inline; scroll-timeline: --custom_name_for_timeline y; scroll-timeline: --custom_name_for_timeline x; scroll-timeline: none block; scroll-timeline: none inline; scroll-timeline: none y; scroll-timeline: none x; /* one value: scroll-timeline-name */ scroll-timeline: none; scroll-timeline: --custom_name_for_timeline;
Сокращённое свойство scroll-timeline может быть применено к контейнерному элементу как комбинация значений <scroll-timeline-name> и <scroll-timeline-axis>. Должно быть указано хотя бы одно из значений. Если указаны оба значения, порядок должен быть <scroll-timeline-name> значение, за которым следует <scroll-timeline-axis> значение.
Примечание: Имена должны быть <dashed-ident> значениями, что означает, что они должны начинаться с --. Это помогает избежать конфликтов имён со стандартными ключевыми словами CSS.
Значения
<scroll-timeline-name>-
См.
scroll-timeline-name. <scroll-timeline-axis>-
См.
scroll-timeline-axis. Значение по умолчанию —block.
Формальное определение
| Начальное значение | как каждое из свойств сокращённого свойства:
|
|---|---|
| Применяется к | контейнерам прокрутки |
| Наследуется | нет |
| Вычисленное значение | как каждое из свойств сокращённого свойства:
|
| Тип анимации | как каждое из свойств сокращённого свойства:
|
Формальный синтаксис
Примеры
Создание анимации именного временного отсчёта прогресса прокрутки
В этом примере временной отсчёт прокрутки под названием --squareTimeline определён с помощью свойства scroll-timeline-name на элементе с идентификатором container. Затем он применяется к анимации на элементе #square с помощью animation-timeline: --squareTimeline.
HTML
HTML для примера показан ниже.
<div id="container"> <div id="square"></div> <div id="stretcher"></div> </div>
CSS
В CSS для контейнера задаётся источник временного отсчёта прокрутки под названием --squareTimeline с помощью свойства scroll-timeline . Также устанавливается использование вертикальной полосы прокрутки для временного отсчёта (это не обязательно, так как это значение по умолчанию).
Высота контейнера задаётся как 300px, и контейнеру также задаётся создание вертикальной полосы прокрутки, если он выходит за пределы (правило CSS height на элементе stretcher ниже делает содержимое выходящим за пределы контейнера).
#container {
height: 300px;
overflow-y: scroll;
scroll-timeline: --squareTimeline y;
/* Firefox supports the older "vertical" syntax */
scroll-timeline: --squareTimeline vertical;
position: relative;
}
CSS ниже определяет квадрат, который вращается в соответствии с временным отсчётом, предоставленным свойством animation-timeline , которое установлено на временной отсчёт --squareTimeline с указанным выше именем.
#square {
background-color: deeppink;
width: 100px;
height: 100px;
animation-name: rotateAnimation;
animation-duration: 1ms; /* Firefox requires this to apply the animation */
animation-timeline: --squareTimeline;
position: absolute;
bottom: 0;
}
#stretcher {
height: 600px;
background: #dedede;
}
@keyframes rotateAnimation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
Правило CSS stretcher задаёт высоту блока как 600px, что создаёт содержимое, выходящее за пределы контейнерного элемента, тем самым создавая полосы прокрутки. Без этого элемента содержимое не выходило бы за пределы контейнера, не было бы полосы прокрутки, а следовательно, и временного отсчёта прокрутки для ассоциации с временным отсчётом анимации.
Результат
Прокрутите вертикальную полосу, чтобы увидеть, как квадрат анимируется при прокрутке.
Квадрат анимируется при прокрутке, и продолжительность анимации при использовании scroll-timeline зависит от скорости прокрутки (тем не менее, свойство animation-duration определено, чтобы вы могли увидеть анимацию, управляемую прокруткой).
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
scroll-timeline |
115 | 115 | 111["Синтаксис сокращённого свойства использует фиксированный порядок: сначала имя, затем ось.", "Поддерживает устаревшие значения осиhorizontal и vertical, а не x и y.", "Директива @scroll-timeline заменена на longhand-свойства scroll-timeline-name и scroll-timeline-axis и сокращённое свойство scroll-timeline."] |
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/scroll-timeline