Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

timeline-scope CSS property

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Die timeline-scope CSS-Eigenschaft modifiziert den Gültigkeitsbereich einer benannten Animation Timeline.

Syntax

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;

Werte

Zulässige Werte für timeline-scope sind:

none

Es gibt keine Änderung im Timeline-Gültigkeitsbereich. Dies ist der Standardwert.

all

Die Namen aller durch Nachfahren definierten Timelines sind im Gültigkeitsbereich für dieses Element und seine Nachfahren.

<dashed-ident>

Gibt den Namen einer existierenden benannten Timeline an (d.h. deklariert mit scroll-timeline-name oder view-timeline-name), die auf einem untergeordneten Element definiert ist. Dies erweitert den Timeline-Gültigkeitsbereich auf das aktuelle Element und auf all seine Nachfahren.

Beschreibung

Die timeline-scope-Eigenschaft modifiziert den Gültigkeitsbereich einer benannten Animation Timeline. Standardmäßig kann eine benannte Timeline (d.h. deklariert mit scroll-timeline-name oder view-timeline-name) nur als steuernde Timeline eines direkten Nachfahren-Elements gesetzt werden (d.h. durch das Setzen von animation-timeline auf diesem mit dem Timelinenamen als Wert). Dies ist der Standard-"Gültigkeitsbereich" für die Timeline.

Der Wert von timeline-scope ist der Name einer Timeline, die auf einem untergeordneten Element definiert ist; dies ändert den Gültigkeitsbereich der Timeline, um das gezielte Element und seine Nachfahren einzuschließen. Mit anderen Worten, das Element, auf dem die timeline-scope-Eigenschaft definiert ist, und alle seine Nachfahren können unter Verwendung dieser Timeline gesteuert werden.

Falls keine Timeline (oder mehr als eine Timeline) mit dem für den timeline-scope-Wert angegebenen Namen existiert, wird eine inaktive Timeline mit dem angegebenen Namen erstellt. Die timeline-scope-Eigenschaft funktioniert nur mit benannten Timelines und kann daher nicht in Verbindung mit anonymen Timelines verwendet werden, die mit den view() oder scroll()-Funktionen für Timeline-Animationen erstellt wurden.

Formale Definition

Anfangswertnone
Anwendbar aufalle Elemente
VererbtNein
Berechneter Wertnone or an ordered list of identifiers
AnimationstypNot animatable

Formale Syntax

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

Beispiele

In diesem Beispiel haben wir ein Element in Reaktion auf das Scrollen eines anderen Elements animiert, indem wir den Timeline-Gültigkeitsbereich mit der timeline-scope-Eigenschaft erweitert haben.

HTML

Das HTML beinhaltet ein zu animierendes Element und ein zu scrollendes Element:

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

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

CSS

Eine Scroll-Timeline mit dem Namen --my-scroller wird auf einem scrollenden Element unter Verwendung der scroll-timeline-name-Eigenschaft definiert. Dieser Scroll-Timeline-Name wird an zwei anderen Stellen verwendet: Er wird als animation-timeline auf das Element angewendet, das wir animieren möchten, und als timeline-scope auf einen Vorfahren sowohl des Scroll- als auch des animierten Elements, um den Gültigkeitsbereich zu erweitern.

Wir setzen die Höhe des <body> auf 100vh und arrangieren seine zwei Kindelemente als zwei gleiche Spalten mit Flexbox. Um den Timeline-Gültigkeitsbereich vom <div class="scroller">-Element auf das gesamte <body> zu erweitern, setzen wir timeline-scope: --my-scroller darauf. Dadurch kann die --my-scroller-Timeline als steuernde Timeline für eine Animation auf dem <body> oder einem darin geschachtelten Element gesetzt werden.

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

  timeline-scope: --my-scroller;
}

.content,
.scroller {
  flex: 1;
}

Wir setzen --my-scroller als scroll-timeline-name auf das scrollende Element, das die Scrollfortschritt-Timeline für unser animiertes Element bereitstellen soll. Wir fügen overflow hinzu, um das Scrollen zu aktivieren, und fügen eine Hintergrundfarbe hinzu, um ihre Grenze sichtbar zu machen. Wir setzen eine große height auf den Inhalt unseres scrollenden Elements, damit das Element tatsächlich gescrollt wird.

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

.long-element {
  height: 2000px;
}

Als Nächstes geben wir dem animierten Element einige grundlegende Stile und wenden eine Animation mit der animation-Kurzform-Eigenschaft darauf an. Wir setzen die animation-timeline auf die benannte Scroll-Timeline: --my-scroller. Noch einmal zur Wiederholung: Das Animieren des Elements basierend auf dem Scrollfortschritt seines Cousin-Elements ist nur möglich, weil wir timeline-scope auf einem gemeinsamen Vorfahren gesetzt haben; das animierte Element ist kein untergeordnetes Element des scrollenden Elements.

css
.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%;
  }
}

Ergebnis

Scrollen Sie die vertikale Leiste im rosa Bereich, um das Quadrat zu animieren.

Der entscheidende Punkt hierbei ist, dass das animierte Element kein Nachfahre des scrollenden Elements ist – um dies zu ermöglichen, erweitern wir den Gültigkeitsbereich der --my-scroller-Timeline, indem wir timeline-scope: --my-scroller auf das <body> setzen.

Spezifikationen

Spezifikation
Scroll-driven Animations
# propdef-timeline-scope

Browser-Kompatibilität

Siehe auch