timeline-trigger-active-range-end CSS property
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die CSS-Eigenschaft timeline-trigger-active-range-end legt das Ende des aktiven Bereichs eines Triggers für eine scrollgesteuerte Animation fest.
Syntax
/* Keywords */
timeline-trigger-active-range-end: auto;
timeline-trigger-active-range-end: normal;
/* <length-percentage> */
timeline-trigger-active-range-end: 80%;
timeline-trigger-active-range-end: 400px;
/* Named timeline range */
timeline-trigger-active-range-end: contain;
timeline-trigger-active-range-end: exit;
/* Named timeline with <length-percentage> */
timeline-trigger-active-range-end: exit -10px;
timeline-trigger-active-range-end: contain 110%;
/* Multiple range end values */
timeline-trigger-active-range-end:
contain 110%,
exit -10px;
/* Global values */
timeline-trigger-active-range-end: inherit;
timeline-trigger-active-range-end: initial;
timeline-trigger-active-range-end: revert;
timeline-trigger-active-range-end: revert-layer;
timeline-trigger-active-range-end: unset;
Werte
Diese Eigenschaft wird als kommagetrennte Liste der folgenden Werte angegeben:
auto-
Verwendet den Wert der Eigenschaft
timeline-trigger-activation-range-end. Dies ist der Standardwert. normal-
Bezeichnet das Ende des Bereichs
normal, also100%. Entsprichtcover 100%bei einer View-Progress-Timeline alstimeline-trigger-sourceundscroll 100%bei einer Scroll-Progress-Timeline. <length-percentage>-
Gibt einen Längen- oder Prozentwert an, der vom Anfang der
normal-Timeline aus gemessen wird. Prozentwerte beziehen sich auf die Länge desnormal-Timeline-Bereichs. <timeline-range-name>-
Bezeichnet das Ende, also
100%, des Timeline-Bereichscover,contain,entry,exit,entry-crossing,exit-crossingoderscroll. <timeline-range-name><length-percentage>-
Gibt einen Längen- oder Prozentwert an, der vom Anfang des angegebenen benannten Timeline-Bereichs aus gemessen wird. Prozentwerte beziehen sich auf die Länge des benannten Bereichs.
Beschreibung
Mit der Eigenschaft timeline-trigger-active-range-end können Sie das Ende des aktiven Bereichs eines Triggers ausdrücklich auf einen Punkt festlegen, der auf der Timeline am oder nach dem Ende seines Aktivierungsbereichs liegt. Das Ende des Aktivierungsbereichs wird durch timeline-trigger-activation-range-end angegeben.
Der aktive Bereich ist der Bereich, in dem ein Trigger nach seiner Aktivierung aktiviert bleibt. Die Aktivierung erfolgt, wenn das beobachtete Element in den Aktivierungsbereich eintritt; die Deaktivierung erfolgt, wenn es den aktiven Bereich verlässt. Standardmäßig endet der aktive Bereich dort, wo der Aktivierungsbereich endet. Diese Eigenschaft schafft eine Pufferzone, die ein vorzeitiges Zurücksetzen verhindert, wenn Benutzer über den Endpunkt des Aktivierungsbereichs hin und her scrollen. Erst wenn sich das beobachtete Element aus dem aktiven Bereich herausbewegt, wird der Trigger inaktiv.
Der Standardwert von timeline-trigger-active-range-end ist auto. Damit werden derselbe benannte Bereich und derselbe Versatz wie bei timeline-trigger-activation-range-end verwendet. Wenn Sie einen Timeline-Bereich, einen Versatz oder beides angeben, legt diese Eigenschaft das Ende des aktiven Bereichs unabhängig vom Wert von timeline-trigger-activation-range-end fest. Liegt der angegebene Endpunkt nicht hinter dem Ende des Aktivierungsbereichs, hat der Wert keine Wirkung.
Der Wert normal legt das Ende des aktiven Bereichs auf das Ende des standardmäßigen benannten Bereichs fest. Das entspricht entweder cover 100% bei einer View-Progress-Timeline (wenn timeline-trigger-source auf eine view()-Funktion gesetzt ist) oder scroll 100% bei einer Scroll-Progress-Timeline (wenn timeline-trigger-source auf eine scroll()-Funktion gesetzt ist).
Mit anderen Werten der Eigenschaft timeline-trigger-active-range-end können Sie Folgendes festlegen:
- Einen Versatz vom Bereich
normal -
Ein
<length>- oder<percentage>-Wert gibt einen Versatz vom Anfang dernormal-Timeline an, die standardmäßig entwedercoveroderscrollentspricht. Negative Werte verschieben das Ende nach außen und verlängern damit den aktiven Bereich. Positive Werte verschieben es nach innen und verkürzen den aktiven Bereich. - Das Ende eines bestimmten benannten Bereichs
-
Ein
<timeline-range-name>-Wert gibt einen Versatz von100%ab dem Anfang des benannten Timeline-Bereichs an. Dieser kanncover,contain,entry,exit,entry-crossing,exit-crossingoderscrollsein. Siehe Namen von Timeline-Bereichen verstehen. - Einen Versatz von einem bestimmten benannten Bereich
-
Wenn sowohl ein
<timeline-range-name>als auch ein<length>- oder<percentage>-Wert angegeben werden, wird das Ende um den angegebenen Abstand vom Anfang des benannten Bereichs versetzt. Prozentwerte beziehen sich auf den angegebenen Bereich. Siehe Einzüge mit Prozentwerten festlegen.
Wenn der Wert auf einen Punkt vor dem Ende des Aktivierungsbereichs gesetzt wird, gilt stattdessen der Wert von timeline-trigger-activation-range-end, als wäre auto angegeben worden.
Die Eigenschaft timeline-trigger-active-range-end kann zusammen mit der Eigenschaft timeline-trigger-active-range-start auch über die Kurzschreibweise timeline-trigger-active-range festgelegt werden. Diese lässt sich wiederum über die Kurzschreibweise timeline-trigger festlegen.
Mehrere Werte für das Bereichsende angeben
Wenn Sie in einer timeline-trigger-active-range-end-Deklaration mehrere kommagetrennte Werte angeben, werden diese den Timeline-Triggern in der Reihenfolge zugeordnet, in der sie in der Eigenschaft timeline-trigger-name erscheinen. Stimmen die Anzahl der Trigger und die Anzahl der Werte für timeline-trigger-active-range-end nicht überein, erfolgt die Zuordnung wie bei mehreren Werten für Animationseigenschaften.
Wenn beispielsweise mehrere timeline-trigger-name-Werte, aber nur ein timeline-trigger-active-range-end-Wert festgelegt sind, gilt dieser Wert für alle timeline-trigger-name-Werte. Sind zwei oder mehr timeline-trigger-active-range-end-Werte festgelegt, werden sie der Reihe nach wiederholt, bis jedem Timeline-Trigger ein Wert zugeordnet ist.
Betrachten Sie diese Deklarationen:
timeline-trigger-name: --my-trigger, --my-other-trigger, --another-trigger;
timeline-trigger-active-range-end:
110%,
exit 300px;
In diesem Fall verwendet --my-trigger das Bereichsende 110% und --my-other-trigger das Bereichsende exit 300px. Da drei Namen, aber nur zwei Bereichsenden vorhanden sind, werden die Werte wiederholt: Der dritte Triggername, --another-trigger, verwendet ebenfalls das Bereichsende 110%.
Formale Definition
| Anfangswert | auto |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Prozentwerte | Relative to the specified named timeline range if specified, otherwise relative to the entire timeline |
| Berechneter Wert | A list where each item may be 'normal', a length percentage, or a timeline range name and a length percentage |
| Animationstyp | Not animatable |
Formale Syntax
timeline-trigger-active-range-end =
[ auto | normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#
<length-percentage> =
<length> |
<percentage>
Beispiele
>Grundlegende Verwendung
Dieses Beispiel zeigt, wie sich das Verlängern des aktiven Bereichs eines Triggers auswirkt. Es vergleicht zwei identische ausgelöste Animationen. Bei einem der beiden Animationstrigger wird das Ende des aktiven Bereichs mit der Eigenschaft timeline-trigger-active-range-end nach außen verschoben.
HTML
Das Markup enthält vier <div>-Elemente – zwei, die animiert werden, und zwei, die jeweils als Trigger dienen. Hinzu kommt Textinhalt, damit die Seite scrollbar ist. Der Textinhalt ist der Kürze halber ausgeblendet.
<div class="animated">I am animated</div>
<div class="animated longer">I am animated longer</div>
...
<section>
<div class="trigger">I create the trigger</div>
<div class="trigger longer">I create a longer trigger</div>
</section>
...
CSS
Die Eigenschaft position der .animated-Elemente wird auf fixed gesetzt. Dadurch stehen sie nahe der oberen linken Ecke des Scrollports, sodass erkennbar ist, wann ihre Animationen beginnen und anhalten.
.animated {
position: fixed;
top: 25px;
left: 25px;
}
.animated.longer {
left: 150px;
}
section {
display: flex;
gap: 20px;
}
Als Nächstes definieren wir mit @keyframes eine rotate-Animation:
@keyframes rotate {
from {
rotate: 0deg;
}
to {
rotate: 360deg;
}
}
Über die Kurzschreibweise animation wird die rotate-Animation auf die .animated-Elemente angewendet. Ohne zugeordneten Trigger würden die Elemente beim Laden der Seite mit der Animation beginnen. Die Eigenschaft animation-trigger macht daraus eine ausgelöste Animation. Ihre Werte verweisen jeweils auf einen timeline-trigger-name namens --t beziehungsweise --longerT und definieren die beiden <animation-action>-Werte play und pause. Diese legen fest, dass die Animation bei Aktivierung abgespielt und bei Deaktivierung angehalten wird.
.animated {
animation: rotate 3s infinite linear;
animation-trigger: --t play pause;
}
.animated.longer {
animation-trigger: --longerT play pause;
}
Das Element .trigger erstellt den Trigger für das Element .animated über die folgenden Eigenschaften:
- Ein
timeline-trigger-namemit dem Wert--t. Dieser stimmt mit dem Bezeichner überein, auf den deranimation-trigger-Wert des Elements.animatedverweist, und verknüpft so beide Elemente. - Ein
timeline-trigger-sourcemit dem Wertview(). Dadurch wird der Timeline-Trigger als View-Progress-Timeline festgelegt; das Element, das den Timeline-Trigger bereitstellt, ist das nächstgelegene scrollbare Vorfahrenelement. - Ein
timeline-trigger-activation-range-endmit dem Wertcontain 50%. Der Bereichcontainreicht von dem Zeitpunkt, an dem das Trigger-Element vollständig in den Scrollport eingetreten ist, bis zu dem Zeitpunkt, an dem es beginnt, ihn zu verlassen. Dieser Wert legt das Ende des Aktivierungsbereichs auf50%dieses Bereichs fest. An diesem Punkt ist das Element vertikal im Scrollport zentriert.
Das Element .trigger.longer erstellt den Trigger für das Element .animated.longer über die folgenden Eigenschaften:
-
Ein
timeline-trigger-namemit dem Wert--longerT, der--tüberschreibt. Dieser Wert stimmt mit dem Bezeichner überein, auf den deranimation-trigger-Wert des Elements.animated.longerverweist, und verknüpft so beide Elemente. -
Ein
timeline-trigger-active-range-endmit dem Wertcover 100%. Der Bereichcoverreicht von dem Zeitpunkt, an dem das Trigger-Element beginnt, in den Scrollport einzutreten, bis zu dem Zeitpunkt, an dem es ihn vollständig verlassen hat.
.trigger {
timeline-trigger-name: --t;
timeline-trigger-source: view();
timeline-trigger-activation-range-end: contain 50%;
}
.trigger.longer {
timeline-trigger-name: --longerT;
timeline-trigger-active-range-end: cover 100%;
}
Ergebnis
Scrollen Sie den Inhalt nach oben. Beide Animationen beginnen, wenn die beobachteten .trigger-Elemente erstmals sichtbar werden. Die Animation eines Elements hält an, wenn der Trigger 50% der contain-Timeline erreicht. Die Animation des anderen Elements hält erst an, wenn der Trigger den Viewport vollständig verlassen hat.
Wenn Sie anschließend wieder nach unten scrollen, beginnen beide Animationen erneut, sobald die Trigger-Elemente den Punkt bei 50% erreichen. Das gilt auch dann, wenn beide Animationen bereits angehalten haben: Der verlängerte aktive Bereich beeinflusst, wie lange der Trigger aktiv bleibt, nicht aber den Punkt, an dem die Aktivierung erfolgt.
Spezifikationen
| Spezifikation |
|---|
| Animation Triggers> # propdef-timeline-trigger-active-range-end> |
Browser-Kompatibilität
Siehe auch
timeline-trigger-active-range-start- Kurzschreibweise
timeline-trigger-active-range timeline-trigger-activation-range-starttimeline-trigger-name,timeline-trigger-sourceundtimeline-trigger-activation-range- Kurzschreibweise
timeline-trigger - Scrollgesteuerte CSS-Animationen verwenden
- Modul CSS-Animationstrigger
- Modul CSS-Animationen