Spec-Zone.ru › CSS

CSS-свойство `timeline-scope`

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

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

Свойство timeline-scope CSS изменяет область действия именованной временной шкалы анимации.

Синтаксис

/* Keyword values */
timeline-scope: all;
timeline-scope: none;

/* Custom name values */
timeline-scope: --custom_name_for_timeline;
timeline-scope: --timeline_name_one, --timeline_name_two;

/* Global values */
timeline-scope: inherit;
timeline-scope: initial;
timeline-scope: revert;
timeline-scope: revert-layer;
timeline-scope: unset;

Значения

Это свойство задаётся ключевым словом или списком пользовательских имён временных шкал, разделённых запятыми:

none
Область действия временной шкалы не изменяется. Это значение по умолчанию.
all
Имена всех временных шкал, определённых потомками, входят в область действия этого элемента и его потомков.
<dashed-ident>
Задаёт имя существующей именованной временной шкалы (то есть объявленной с помощью scroll-timeline-name или view-timeline-name), определённой на элементе-потомке. Это расширяет область действия временной шкалы на текущий элемент и всех его потомков.

Описание

Свойство timeline-scope изменяет область действия именованной временной шкалы анимации. По умолчанию именованную временную шкалу (то есть объявленную с помощью scroll-timeline-name или view-timeline-name) можно задать в качестве управляющей временной шкалы только для непосредственного потомка (то есть установив для него animation-timeline со значением, равным имени временной шкалы). Это область действия временной шкалы по умолчанию.

Значение timeline-scope — это имя временной шкалы, определённой на элементе-потомке; оно изменяет область действия временной шкалы, включая в неё целевой элемент и его потомков. Иными словами, элемент, для которого задано свойство timeline-scope, и все его элементы-потомки могут управляться с помощью этой временной шкалы.

Если временная шкала с именем, заданным в значении timeline-scope, отсутствует или таких временных шкал несколько, создаётся неактивная временная шкала с указанным именем. Свойство timeline-scope работает только с именованными временными шкалами, поэтому его нельзя использовать вместе с анонимными временными шкалами, созданными с помощью функций временной шкалы анимации view() или scroll().

Формальное определение

Исходное значение none
Применяется к всем элементам
Наследуется нет
Вычисленное значение <code>none</code> или упорядоченный список идентификаторов
Тип анимации Не анимируется

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

timeline-scope = 
  none |
  <dashed-ident>#

Примеры

В этом примере мы анимировали элемент в ответ на прокрутку другого элемента, расширив область действия временной шкалы с помощью свойства timeline-scope.

HTML

HTML включает элемент для анимации и элемент для прокрутки:

<div class="content">
  <div class="box animation"></div>
</div>

<div class="scroller">
  <div class="long-element"></div>
</div>

CSS

Именованная временная шкала прокрутки --my-scroller задаётся с помощью свойства scroll-timeline-name для прокручиваемого элемента. Это имя временной шкалы прокрутки используется ещё в двух местах: оно задаётся как animation-timeline для элемента, который нужно анимировать, и как timeline-scope для предка прокручиваемого и анимируемого элементов, расширяя область действия.

Мы задаём высоту <body> равной 100vh и размещаем два его дочерних элемента в двух равных столбцах с помощью flexbox. Чтобы расширить область действия временной шкалы с элемента <div class="scroller"> на весь <body>, мы задаём для него timeline-scope: --my-scroller. Благодаря этому временную шкалу --my-scroller можно задать в качестве управляющей временной шкалы для анимации, назначенной <body> или любому вложенному в него элементу.

body {
  margin: 0;
  height: 100vh;
  display: flex;

  timeline-scope: --my-scroller;
}

.content,
.scroller {
  flex: 1;
}

Мы задаём --my-scroller в качестве scroll-timeline-name для прокручиваемого элемента, который должен предоставлять временную шкалу прогресса прокрутки для анимируемого элемента. Мы добавляем overflow, чтобы включить прокрутку, и задаём цвет фона, чтобы обозначить его границы. Мы задаём большое значение height для содержимого прокручиваемого элемента, чтобы он действительно прокручивался.

.scroller {
  overflow: scroll;
  scroll-timeline-name: --my-scroller;
  background: deeppink;
}

.long-element {
  height: 2000px;
}

Затем мы задаём анимируемому элементу простые стили и применяем к нему анимацию с помощью сокращённого свойства animation. Мы задаём именованную временную шкалу прокрутки --my-scroller в качестве animation-timeline. Напомним: анимировать элемент в зависимости от прогресса прокрутки его элемента-родственника возможно только потому, что мы задали timeline-scope для общего предка; анимируемый элемент не является потомком прокручиваемого элемента.

.box {
  width: 100px;
  height: 100px;
  border-radius: 10px;
  background-color: rebeccapurple;
}

.animation {
  animation: rotate-appear 1ms linear;
  animation-timeline: --my-scroller;
}

@keyframes rotate-appear {
  from {
    rotate: 0deg;
    translate: 0;
  }

  to {
    rotate: 720deg;
    translate: 100%;
  }
}
@layer supports {
  @supports not (timeline-scope: none) {
    body::before {
      content: "Your browser does not support the 'timeline-scope' property.";
      background-color: wheat;
      display: block;
      text-align: center;
      padding: 1rem;
    }
  }
}

Результат

Прокрутите вертикальную полосу в розовой области, чтобы увидеть анимацию квадрата.

Важно отметить, что анимируемый элемент не является потомком прокручиваемого элемента. Чтобы это работало, мы расширяем область действия временной шкалы --my-scroller, задавая timeline-scope: --my-scroller для элемента <body>.

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

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

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

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
timeline-scope
116
116
предварительная версия
102
26
116
Нет
78
26
24.0
116
26
all
116–138
116–138
предварительная версия
102–122
26
116–138
Нет
78–91
26
24.0–30.0
116–138
26
none
116
116
предварительная версия
102
26
116
Нет
78
26
24.0
116
26

См. также

  • animation-timeline
  • scroll-timeline, scroll-timeline-name
  • view-timeline, view-timeline-name
  • Анимации CSS, управляемые прокруткой

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/timeline-scope

Spec-Zone.ru

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