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

View in English Always switch to English

animation-range

Eingeschränkt verfügbar

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

Die animation-range CSS Kurzform-Eigenschaft wird verwendet, um den Anfang und das Ende des Anwendungsbereichs einer Animation entlang ihrer Zeitleiste festzulegen, d.h. wo entlang der Zeitleiste eine Animation starten und enden wird.

Bestandteile der Eigenschaften

Diese Eigenschaft ist eine Kurzform für die folgenden CSS-Eigenschaften:

Syntax

css
/* Range start value only*/
/* Single value syntax */
animation-range: normal;
animation-range: 20%;
animation-range: 100px;
animation-range: cover;
animation-range: contain;
/* Two value syntax */
animation-range: cover 20%;
animation-range: contain 100px;

/* Range start and end values */
/* Two value syntax */
animation-range: normal 25%;
animation-range: 25% normal;
animation-range: 25% 50%;
animation-range: entry exit;
/* Three value syntax */
animation-range: cover cover 200px;
animation-range: 10% exit 90%;
animation-range: entry 10% 90%;
/* Four value syntax */
animation-range: cover 0% cover 200px;
animation-range: entry 10% exit 100%;

/* Global values */
animation-range: inherit;
animation-range: initial;
animation-range: revert;
animation-range: revert-layer;
animation-range: unset;

Die animation-range-Kurzform-Eigenschaft wird als eine oder mehrere einzelne Animationsbereiche angegeben, getrennt durch Kommas. Jeder Animationsbereich wird als ein bis vier durch Leerzeichen getrennte Werte angegeben, die aus <timeline-range-name>-Werten, <length-percentage>-Werten und/oder dem Schlüsselwort normal bestehen.

Werte

<animation-range-start>

Das Schlüsselwort normal, ein <length-percentage>, ein <timeline-range-name> oder ein <timeline-range-name> <length-percentage>-Paar, das den animation-range-start darstellt. Wenn ein <timeline-range-name> ohne <length-percentage> festgelegt ist, ist das <length-percentage> standardmäßig 0%.

<animation-range-end>

Das Schlüsselwort normal, ein <length-percentage>, ein <timeline-range-name> oder ein <timeline-range-name> <length-percentage>-Paar, das den animation-range-end darstellt. Wenn ein <timeline-range-name> ohne <length-percentage> festgelegt ist, ist das <length-percentage> standardmäßig 100%.

Beschreibung

Die animation-range-Kurzform-Eigenschaft legt die Werte für animation-range-start und animation-range-end fest und definiert, wo entlang der Animations-Zeitleiste die Animation starten und enden wird. Standardmäßig werden die in einer Keyframe-Animation definierten Stilelemente nur auf ein Element angewendet, während dieses Element animiert wird. Wann eine Keyframe-Animation auf ein Element angewendet wird, hängt von der Animations-Zeitleiste dieser Animation ab. Standardmäßig werden Animationen nur zwischen dem Bereichsstart und dem Bereichsende der Zeitleiste angewendet. Um die Animation außerhalb dieses Bereichs anzuwenden, setzen Sie den animation-fill-mode auf backwards, forwards oder both. Diese drei animation-fill-mode-Werte wenden die ersten Keyframe-Stile bis zum Bereichsstart, die letzten Keyframe-Stile nach dem Ende der Animation oder beide sowohl davor als auch danach an.

Der Scrollport-Bereich, der als Bereich für die Sichtbarkeitsfortschritte bekannt ist, ist der Bereich, innerhalb dessen das Element einer Animation mit einer benannten Sichtbarkeitsfortschritts-Zeitleiste als sichtbar angesehen wird. Standardmäßig ist dies der vollständige Bereich des Scrollports, kann jedoch mit der view-timeline-inset-Eigenschaft angepasst werden.

Wenn zwei Werte als Bestandteile der <animation-range>-Eigenschaft angegeben werden, werden sie in der Reihenfolge <animation-range-start> gefolgt von <animation-range-end> interpretiert. Der Wert jeder Komponente ist entweder das Schlüsselwort normal, ein <length-percentage> oder ein <timeline-range-name>, gefolgt von einem <length-percentage>. Diese Werte sind durch Leerzeichen getrennt. Normal entspricht 0% für den Start und 100% für das Ende. Das Festlegen von normal mit einem <length-percentage> für entweder den Start- oder Endbereich ist ungültig.

Definieren des Bereichsstarts und Festlegen des Bereichsendes als Standardwert

Wenn Sie nur <animation-range-start> durch Festlegen eines einzelnen <length-percentage>, eines einzelnen <timeline-range-name> oder das Schlüsselwort normal definieren oder indem Sie einen einzelnen <timeline-range-name> gefolgt von einem einzelnen <length-percentage> angeben, folgen dem berechneten Wert von <animation-range-end> spezifische Regeln:

Wenn der Wert ein einzelnes <length-percentage> oder das Schlüsselwort normal ist, definiert dieser Wert das <animation-range-start>, und das <animation-range-end> wird implizit auf normal gesetzt. Zum Beispiel:

  • animation-range: 20%; ist gleichbedeutend mit animation-range-start: 20%; animation-range-end: normal;
  • animation-range: normal; ist gleichbedeutend mit animation-range-start: normal; animation-range-end: normal;

Wenn der Wert ein einzelner <timeline-range-name> (ohne ein folgendes <length-percentage>)-Wert ist, wird dieser Zeitleistenbereichsname auf die Komponenten <animation-range-start> und <animation-range-end> angewendet, und die Bereiche von 0% bzw. 100% sind impliziert. Zum Beispiel:

  • animation-range: contain; ist gleichbedeutend mit animation-range-start: contain 0%; animation-range-end: contain 100%;
  • animation-range: cover; ist gleichbedeutend mit animation-range-start: cover 0%; animation-range-end: cover 100%;

Wenn der Wert ein einzelner <timeline-range-name> ist, gefolgt von einem einzelnen <length-percentage> in dieser Reihenfolge, definiert das Paar das <animation-range-start>, und der definierte <timeline-range-name> wird auf <animation-range-end> bei 100% angewendet. Zum Beispiel:

  • animation-range: cover 20%; ist gleichbedeutend mit animation-range-start: cover 20%; animation-range-end: cover 100%;
  • animation-range: contain 100px; ist gleichbedeutend mit animation-range-start: contain 100px; animation-range-end: contain 100%;

Explizites Definieren von Bereichsstart und -ende mit zwei Werten

Wenn zwei oder mehr Werte in Ihrer animation-range-Deklaration enthalten sind und die Werte alles andere als ein einzelner <timeline-range-name> gefolgt von einem <length-percentage> sind, werden sowohl <animation-range-start> als auch <animation-range-end> explizit festgelegt.

Wenn Sie zwei Werte einschließen und der erste Wert das Schlüsselwort normal oder ein <length-percentage> ist, definiert dieser Wert den <animation-range-start>, und der zweite Wert definiert den <animation-range-end>. Zum Beispiel:

  • animation-range: normal 25%; ist gleichbedeutend mit animation-range-start: normal; animation-range-end: 25%;
  • animation-range: 25% 50%; ist gleichbedeutend mit animation-range-start: 25%; animation-range-end: 50%;
  • animation-range: 25% contain; ist gleichbedeutend mit animation-range-start: 25%; animation-range-end: contain 100%;
  • animation-range: 25% normal; ist gleichbedeutend mit animation-range-start: 25%; animation-range-end: normal;

Mehrere Animationen

Bei der Angabe von Bereichen für mehrere Animationen wird die animation-range-Kurzform-Eigenschaft als eine oder mehrere einzelne Animationsbereiche angegeben, getrennt durch Kommas. Jeder Animationsbereich wird auf die Animationen in der Reihenfolge angewendet, in der die animation-names erscheinen. In Situationen, in denen die Anzahl der Animationen und die animation-range-Eigenschaftswerte nicht übereinstimmen, werden die zusätzlichen Bereiche ignoriert, wenn es mehr animation-range-Werte als Animationen gibt. Wenn es mehr Animationen als Bereiche gibt, werden die Liste der animation-range-Werte wiederholt, bis es für jede Animation einen entsprechenden Bereich gibt. Zum Beispiel, wenn wir animation-range: 25% 75%, normal; festlegen, ist der Animationsbereich aller ungeraden Animationen 25% 75% und aller geraden Animationen 0% 100%.

Formale Definition

Anfangswertwie die jeweiligen Kurzschreibweisen:
Anwendbar aufalle Elemente
VererbtNein
ProzentwerteRelative to the specified named timeline range if specified, otherwise relative to the entire timeline
Berechneter Wertwie die jeweiligen Kurzschreibweisen:
  • animation-range-start: A list where each item may be 'normal', a length percentage, or a timeline range name and a length percentage
  • animation-range-end: A list where each item may be 'normal', a length percentage, or a timeline range name and a length percentage
Animationstypwie die jeweiligen Kurzschreibweisen:

Formale Syntax

animation-range = 
[ <'animation-range-start'> <'animation-range-end'>? ]#

<animation-range-start> =
[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#

<animation-range-end> =
[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#

<length-percentage> =
<length> |
<percentage>

Beispiele

Grundlegende Verwendung der animation-range-Eigenschaft

In diesem Beispiel verkürzen wir die Dauer der Ansicht-Fortschritts-Scroll-Animation, indem wir die animation-range-Eigenschaft verwenden, um den Start und das Ende der Animation zu versetzen, und demonstrieren die Wirkung der animation-fill-mode-Eigenschaft auf verkürzte Animations-Zeitleisten.

HTML

In der Mitte eines Textwalls fügen wir ein Element ein, das wir animieren werden. Wir fügen viel Text hinzu, um sicherzustellen, dass unser Inhalt seinen Container überfließt, aber dies ist der Kürze halber ausgeblendet. Wir fügen auch ein Kontrollkästchen ein, um die animation-fill-mode-Eigenschaft ein- und auszuschalten, um ihre Wirkung auf verkürzte Animations-Zeitleisten zu demonstrieren. Auch dies ist ausgeblendet.

html
<div class="animatedElement"></div>

CSS

Wir definieren eine Animation, die die Deckkraft, die Skalierung und die Hintergrundfarbe eines Elements animiert, wodurch es beim Fortschreiten der Animation verblasst, vergrößert wird und seine Farbe ändert. Wir wenden diese Animation mit der animation-Kurzform auf das animatedElement an.

Eine Fortschritts-Zeitleiste wird erstellt, indem die view()-Funktion als Wert der animation-timeline-Eigenschaft auf unser animatedElement gesetzt wird. Das Ergebnis ist, dass das Element animiert wird, während es beim Scrollen durch das Dokument nach oben bewegt wird. Wir deklarieren die animation-timeline-Eigenschaft nach der Kurzform, da die Kurzform diese Eigenschaft zurücksetzt.

Schließlich wird eine animation-range-Deklaration festgelegt, um die Animation später als erwartet beginnen und früher beenden zu lassen.

css
.animatedElement {
  background-color: deeppink;
  animation: appear 1ms linear;
  animation-timeline: view();
  animation-range: entry 10% exit -25%;
}

@keyframes appear {
  from {
    background-color: rebeccapurple;
    opacity: 0;
    transform: scaleX(0);
  }

  to {
    background-color: darkturquoise;
    opacity: 0.75;
    transform: scaleX(0.75);
  }
}

Wir fügen auch bedingte Formatierungen hinzu: Wenn das Kontrollkästchen aktiviert ist, wird die animation-fill-mode-Eigenschaft auf das animierte Element angewendet:

css
:has(:checked) .animatedElement {
  animation-fill-mode: both;
}

Die anderen Stile sind ebenfalls der Kürze halber ausgeblendet.

Ergebnis

Scrollen Sie, um das animierte Element zu sehen.

Beachten Sie, wie die from- oder 0%-Keyframe-Property-Werte nicht auf das animierte Element angewendet werden, bis der obere Blockaußenrand um 10% über den unteren Rand des Containers hinausragt; es ist voll groß, vollständig deckend und magentafarben. Zu diesem Zeitpunkt wird die Animation angewendet, und es wird mit den Werten gestylt, die durch den 0% Keyframe-Selector definiert sind. Wenn das animation-range-end erreicht ist, 25% vom oberen Rand des Scrollport entfernt, springt es zu seinem ursprünglichen Styling zurück.

In der Regel sollten Sie animation-fill-mode: both einstellen, wenn Sie Scroll-basierte Animationen erstellen. Der Sprung zum Standardzustand erfolgt, weil wir die animation-fill-mode-Eigenschaft nicht auf das Element gesetzt haben, die verwendet werden kann, um die Stile einer Animation auf ein Element vor und nach ihrer Ausführung anzuwenden. In diesem Beispiel haben wir die Eigenschaft zunächst weggelassen, um die Auswirkungen von animation-range besser visualisieren zu können.

Aktivieren Sie das Kontrollkästchen, um die animation-fill-mode-Eigenschaft auf das animierte Element anzuwenden, und scrollen Sie erneut: Die Animationsstile sollten jetzt kontinuierlich angewendet werden.

Spezifikationen

Spezifikation
Scroll-driven Animations
# animation-range

Browser-Kompatibilität

Siehe auch