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

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die timeline-scope CSS Eigenschaft ändert den Geltungsbereich einer benannten Animations-Timeline.

Standardmäßig kann eine benannte Timeline (d.h. deklariert mit scroll-timeline-name oder view-timeline-name) nur als Steuerungs-Timeline eines direkten Nachfahrenelements gesetzt werden (d.h. durch Setzen von animation-timeline auf dieses Element mit dem Namen der Timeline als Wert). Dies ist der Standard-"Scope" der Timeline.

timeline-scope erhält den Namen einer Timeline, die auf einem Nachfahrenelement definiert ist; dies führt dazu, dass der Geltungsbereich der Timeline auf das Element, auf dem timeline-scope gesetzt ist, und auf alle seine Nachfahren erweitert wird. Mit anderen Worten, dieses Element und alle seine Nachfahrenelemente können nun mit dieser Timeline gesteuert werden.

Hinweis: Wenn keine Timeline (oder mehr als eine Timeline) mit dem für timeline-scope angegebenen Namen existiert, wird eine inaktive Timeline mit dem angegebenen Namen erstellt.

Syntax

css
timeline-scope: none;
timeline-scope: custom_name_for_timeline;

Werte

Erlaubte Werte für timeline-scope sind:

none

Es gibt keine Änderung im Geltungsbereich der Timeline.

<dashed-ident>

Gibt den Namen einer bestehenden benannten Timeline an (d.h. deklariert mit scroll-timeline-name oder view-timeline-name), die auf einem Nachfahrenelement definiert ist. Dies führt dazu, dass der Geltungsbereich der Timeline auf das Element, auf dem timeline-scope gesetzt ist, und auf alle seine Nachfahren erweitert wird.

Hinweis: <dashed-ident> Werte müssen mit -- beginnen, um Namenskollisionen mit Standard-CSS-Schlüsselwörtern zu vermeiden.

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 wird eine Scroll-Timeline mit dem Namen --my-scroller mit der Eigenschaft scroll-timeline-name auf dem Element mit der Klasse scroller (dem Scrolling-Element) definiert. Diese wird dann auf die Animation des Elements mit den Klassen box und animation (dem animierten Element) angewendet, mit animation-timeline: --my-scroller. Der entscheidende Punkt hier ist, dass das animierte Element kein Nachfahre des Scrolling-Elements ist — um dies zu ermöglichen, erweitern wir den Geltungsbereich der --my-scroller Timeline, indem wir timeline-scope: --my-scroller auf den <body> setzen.

HTML

Das HTML für das Beispiel ist unten gezeigt.

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

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

CSS

Das CSS ist wie folgt.

Zuerst setzen wir die Höhe des <body> auf 100vh und legen seine zwei Kindelemente als zwei gleiche Spalten mit Flexbox an. Wir setzen auch timeline-scope: --my-scroller darauf, damit die --my-scroller Timeline als Steuerungstimeline für eine Animation auf dem <body> und jedem darin befindlichen Element gesetzt werden kann.

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

  /* increases the timeline scope from the .scroller <div> element
  to the whole <body> */
  timeline-scope: --my-scroller;
}

.content,
.scroller {
  flex: 1;
}

Als nächstes wird auf dem Scrolling-Element die --my-scroller Timeline gesetzt, overflow, damit es scrollen kann, und es erhält eine Hintergrundfarbe, damit sein Rand deutlich sichtbar ist. Das lange Kindelement des Scrolling-Elements erhält eine große Höhe, damit das Scrolling-Element tatsächlich scrollt.

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

.long-element {
  height: 2000px;
}

Dann geben wir dem animierten Element ein einfaches Styling und wenden eine Animation darauf an. Wir setzen auch die --my-scroller Timeline darauf, indem wir animation-timeline: --my-scroller verwenden. Zur Wiederholung, dies ist nur möglich, weil wir zuvor timeline-scope: --my-scroller auf dem <body>-Element gesetzt haben — das animierte Element ist kein Nachfahre des Scrolling-Elements.

css
.box {
  width: 100px;
  height: 100px;
  border-radius: 10px;
  background-color: rebeccapurple;
  position: fixed;
  top: 20px;
  left: 0%;
}

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

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

  to {
    rotate: 720deg;
    left: 100%;
  }
}

Ergebnis

Scrollen Sie die vertikale Leiste im rosa Bereich, um zu sehen, wie das Quadrat animiert wird.

Spezifikationen

Specification
Scroll-driven Animations
# propdef-timeline-scope

Browser-Kompatibilität

Siehe auch