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 modifiziert den Geltungsbereich einer benannten Animations-Timeline.
Standardmäßig kann eine benannte Timeline (d.h. deklariert durch scroll-timeline-name
oder view-timeline-name
) nur als die steuernde Timeline eines direkten Nachfahrelements festgelegt werden (d.h. durch Setzen von animation-timeline
auf dieses mit dem Timelinenamen als Wert). Dies ist der Standard-"Geltungsbereich" der Timeline.
timeline-scope
wird der Name einer auf einem Nachfahrelement definierten Timeline gegeben; dies bewirkt, dass der Geltungsbereich der Timeline auf das Element erweitert wird, auf dem timeline-scope
festgelegt ist, sowie auf alle seine Nachfahren. Mit anderen Worten, dieses Element und alle seine Nachfahrelemente können nun mit dieser Timeline gesteuert werden.
Hinweis:
Wenn 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.
Syntax
timeline-scope: none;
timeline-scope: custom_name_for_timeline;
Werte
Erlaubte Werte für timeline-scope
sind:
none
-
Es gibt keine Änderung im Timelinen-Geltungsbereich.
<dashed-ident>
-
Gibt den Namen einer existierenden benannten Timeline an (d.h. deklariert durch
scroll-timeline-name
oderview-timeline-name
), die auf einem Nachfahrelement definiert ist. Dies bewirkt, dass der Geltungsbereich der Timeline auf das Element erweitert wird, auf demtimeline-scope
festgelegt ist, sowie auf alle seine Nachfahren.Hinweis:
<dashed-ident>
-Werte müssen mit--
beginnen, um Konflikte mit Standard-CSS-Schlüsselwörtern zu vermeiden.
Formale Definition
Anfangswert | none |
---|---|
Anwendbar auf | alle Elemente |
Vererbt | Nein |
Berechneter Wert | none or an ordered list of identifiers |
Animationstyp | Not animatable |
Formale Syntax
timeline-scope =
none |
all |
<dashed-ident>#
Beispiele
In diesem Beispiel wird eine Scroll-Timeline namens --my-scroller
mithilfe der Eigenschaft scroll-timeline-name
auf dem Element mit der Klasse scroller
(dem Scroll-Element) definiert. Diese wird dann auf die Animation des Elements mit den Klassen box
und animation
(dem animierten Element) angewendet, indem animation-timeline: --my-scroller
verwendet wird. Der entscheidende Punkt ist, dass das animierte Element kein Nachfahre des Scroll-Elements ist — um dies zu ermöglichen, erweitern wir den Geltungsbereich der --my-scroller
-Timeline, indem wir timeline-scope: --my-scroller
auf dem <body>
setzen.
HTML
Der HTML-Code für das Beispiel ist unten dargestellt.
<div class="content">
<div class="box animation"></div>
</div>
<div class="scroller">
<div class="long-element"></div>
</div>
CSS
Die CSS lautet wie folgt.
Zunächst setzen wir die Höhe des <body>
auf 100vh
und verteilen seine zwei Kindelemente als zwei gleich große Spalten mit Hilfe von Flexbox. Wir setzen außerdem timeline-scope: --my-scroller
, sodass die --my-scroller
-Timeline als steuerende Timeline für eine auf dem <body>
und jedem darin befindlichen Element gesetzte Animation festgelegt werden kann.
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 das Scroll-Element die --my-scroller
-Timeline gesetzt, overflow
, sodass es scrollt, und es wird eine Hintergrundfarbe festgelegt, damit seine Begrenzung klar erkennbar ist. Dem langen Kind-Element des Scroll-Elements wird eine große Höhe zugewiesen, sodass das Scroll-Element tatsächlich scrollt.
.scroller {
overflow: scroll;
scroll-timeline-name: --my-scroller;
background: deeppink;
}
.long-element {
height: 2000px;
}
Dann geben wir dem animierten Element ein grundlegendes Styling und wenden eine Animation darauf an. Wir setzen auch die --my-scroller
-Timeline darauf, indem wir animation-timeline: --my-scroller
verwenden. Um es zu wiederholen, 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 Scroll-Elements.
.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 pinkfarbenen Bereich, um das Quadrat zu animieren.
Spezifikationen
Specification |
---|
Scroll-driven Animations> # propdef-timeline-scope> |
Browser-Kompatibilität
Loading…