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

View in English Always switch to English

CSS-Eigenschaft timeline-trigger

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die CSS-Kurzschreibweise timeline-trigger definiert auf einem Element einen Trigger für eine scrollgesteuerte Animation.

Zugehörige Eigenschaften

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

Syntax

css
/* Keyword */
timeline-trigger: none;

/* Name | source */
timeline-trigger: --t view();
timeline-trigger: --t --my-timeline;

/* Name | source | activation range */
timeline-trigger: --t view() contain;
timeline-trigger: --t --my-timeline entry exit 50%;

/* Name | source | activation range | active range */
timeline-trigger: --t view() contain / cover;
timeline-trigger: --t --my-timeline entry / entry exit 50%;

/* Multiple triggers */
timeline-trigger:
  --t view(),
  --other-trigger --my-timeline entry / entry 50% exit 50%;

/* Global values */
timeline-trigger: inherit;
timeline-trigger: initial;
timeline-trigger: revert;
timeline-trigger: revert-layer;
timeline-trigger: unset;

Werte

Diese Eigenschaft wird entweder mit dem Schlüsselwort none oder mit einer durch Kommas getrennten Liste von <timeline-trigger>-Werten angegeben:

none

Gibt an, dass das Element keinen Trigger erzeugt. Dabei werden alle vier zugehörigen Eigenschaften auf ihre Standardwerte zurückgesetzt.

<timeline-trigger>

Wird als durch Leerzeichen getrennte Liste der folgenden Werte angegeben:

<'timeline-trigger-name'>

Gibt den timeline-trigger-name-Wert an, der den Namen zur Identifizierung des Triggers darstellt. Der Standardwert ist none.

<'timeline-trigger-source'>

Gibt den timeline-trigger-source-Wert an, der die Timeline des Triggers darstellt. Der Standardwert ist auto.

<'timeline-trigger-activation-range'> Optional

Gibt den timeline-trigger-activation-range-Wert an, der den Aktivierungsbereich des Triggers darstellt. Der Standardwert ist normal. Dies entspricht cover 0% cover 100% für eine View-Progress-Timeline als timeline-trigger-source und 0% 100% für eine Scroll-Progress-Timeline als timeline-trigger-source.

<'timeline-trigger-active-range'> Optional

Wird durch einen Schrägstrich (/) eingeleitet und gibt den timeline-trigger-active-range-Wert an, der den Bereich darstellt, in dem der Trigger aktiv bleibt. Der Standardwert ist auto. Dadurch erhält <'timeline-trigger-active-range'> denselben Wert wie <'timeline-trigger-activation-range'>.

Beschreibung

Mit der Eigenschaft timeline-trigger können alle zugehörigen Eigenschaften, die zum Erstellen eines Triggers für eine scrollgesteuerte CSS-Animation verwendet werden, in einer einzigen Deklaration festgelegt werden. Zugehörige Eigenschaften, die in der durch Kommas getrennten Liste der timeline-trigger-Werte nicht angegeben sind, erhalten ihre Standardwerte.

Reihenfolge in der Kurzschreibweise

Da einige der zugehörigen Eigenschaften dieselben Werttypen verwenden, ist ihre Reihenfolge innerhalb der Kurzschreibweise wichtig. Die Werte müssen in der folgenden Reihenfolge angegeben werden:

Der Wert für timeline-trigger-active-range kann nur angegeben werden, wenn auch der Wert für timeline-trigger-activation-range angegeben wird. Die beiden Werte werden durch einen Schrägstrich (/) getrennt.

Beispiel:

css
.trigger {
  timeline-trigger: --my-trigger view() entry / contain;
}

Ein Element mit dieser Deklaration hat:

  • Einen timeline-trigger-name mit dem identifizierenden Wert --my-trigger.
  • Einen timeline-trigger-source-Wert von view(). Dadurch wird das nächstgelegene scrollbare Vorfahrenelement des Elements ausgewählt, um die Timeline des Triggers festzulegen.
  • Einen Aktivierungsbereich von entry. Das bedeutet, dass der Trigger aktiviert wird, wenn das beobachtete Element in den Bereich entry gelangt. Dieser Bereich beginnt, wenn die Anfangskante des Elements die Endkante des Scrollports passiert, und endet, wenn die Endkante des Elements die Endkante des Scrollports passiert.
  • Einen Bereich, in dem der Trigger aktiv bleibt, von contain. Das bedeutet, dass der Trigger nach seiner Aktivierung aktiv bleibt, bis das beobachtete Element den Bereich contain verlässt: den Bereich, in dem ein beliebiger Teil des beobachteten Elements im Scrollport sichtbar ist.

Um ein animiertes Element durch den zuvor beschriebenen Trigger auszulösen, referenzieren Sie den timeline-trigger-name in der Eigenschaft animation-trigger des animierten Elements. Legen Sie sowohl timeline-trigger als auch animation-trigger auf dem animierten Element fest, damit es seinen eigenen Trigger erzeugen kann.

Der Wert none

Das Schlüsselwort none gibt an, dass das Element keinen Trigger für eine scrollgesteuerte Animation erzeugt. none entspricht none auto normal / normal und setzt damit alle vier zugehörigen Eigenschaften auf ihre Standardwerte zurück.

Formale Definition

Anfangswertwie die jeweiligen Kurzschreibweisen:
Anwendbar aufalle Elemente
VererbtNein
Berechneter Wertwie die jeweiligen Kurzschreibweisen:
Animationstypwie die jeweiligen Kurzschreibweisen:

Formale Syntax

timeline-trigger = 
none |
[ <'timeline-trigger-name'> <'timeline-trigger-source'> <'timeline-trigger-activation-range'> [ / <'timeline-trigger-active-range'> ]? ]#

<timeline-trigger-name> =
none |
<dashed-ident>#

<timeline-trigger-source> =
[ none | auto | [ <dashed-ident> | <scroll()> | <view()> ]+ ]#

<timeline-trigger-activation-range> =
[ <'timeline-trigger-activation-range-start'> <'timeline-trigger-activation-range-end'>? ]#

<timeline-trigger-active-range> =
[ <'timeline-trigger-active-range-start'> <'timeline-trigger-active-range-end'>? ]#

<scroll()> =
scroll( [ <scroller> || <axis> ]? )

<view()> =
view( [ <axis> || <'view-timeline-inset'> ]? )

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

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

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

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

<scroller> =
root |
nearest |
self

<axis> =
block |
inline |
x |
y

<view-timeline-inset> =
[ [ auto | <length-percentage> ]{1,2} ]#

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

Beispiele

Grundlegende Verwendung

Dieses Beispiel zeigt, wie Sie mit der Kurzschreibweise timeline-trigger eine scrollgesteuerte Animation erstellen.

HTML

Wir verwenden zwei <div>-Elemente: eines, das animiert wird, und eines, auf dem ein Trigger erstellt wird. Der einfache Textinhalt, der das Scrollen der Seite ermöglicht, wurde der Kürze halber ausgeblendet.

html
<div class="animated">I am animated</div>

...

<div class="trigger">I create the trigger</div>

...

CSS

Die Eigenschaft position des Elements .animated wird auf fixed gesetzt. Dadurch wird es nahe der oberen linken Ecke des Scrollports positioniert, sodass wir erkennen können, wann seine Animation beginnt und endet.

css
.animated {
  position: fixed;
  top: 25px;
  left: 25px;
}

Anschließend definieren wir mit @keyframes eine rotate-Animation:

css
@keyframes rotate {
  from {
    rotate: 0deg;
  }

  to {
    rotate: 360deg;
  }
}

Mit der Kurzschreibweise animation wenden wir die rotate-Animation auf das Element .animated an. Ohne Trigger beginnen Animationen beim Laden der Seite. Wir fügen die Eigenschaft animation-trigger hinzu, die auf einen timeline-trigger-name von --t verweist und zwei <animation-action>-Werte angibt: play und pause. Dadurch wird die Animation bei der Aktivierung abgespielt und bei der Deaktivierung pausiert.

css
.animated {
  animation: rotate 3s infinite linear;
  animation-trigger: --t play pause;
}

Das Element .trigger erstellt den Trigger für das Element .animated mit dem timeline-trigger-Wert --t view() entry / cover. Damit wird Folgendes in einer einzigen Deklaration festgelegt:

  • Ein timeline-trigger-name-Wert von --t. Dieser entspricht dem Bezeichner, auf den der Wert der Eigenschaft animation-trigger des Elements .animated verweist, und verknüpft so die beiden Elemente.
  • Ein timeline-trigger-source-Wert von view(). Dadurch wird eine View-Progress-Timeline als Timeline des Triggers und das nächstgelegene scrollbare Vorfahrenelement als deren Quelle festgelegt.
  • Ein timeline-trigger-activation-range-Wert von entry. Das bedeutet, dass der Trigger aktiviert wird, wenn die Block-Anfangskante des beobachteten Elements in den Scrollport eintritt.
  • Ein timeline-trigger-active-range-Wert von cover. Das bedeutet, dass der Trigger nach seiner Aktivierung aktiv bleibt, bis das beobachtete Element den Scrollport vollständig verlassen hat.
css
.trigger {
  timeline-trigger: --t view() entry / cover;
}

Ergebnis

Scrollen Sie durch den Inhalt. Die Drehung beginnt, wenn das beobachtete Element in den Bereich entry gelangt, also wenn das Element .trigger erstmals am unteren Rand des Scrollports erscheint. Die Animation endet erst, wenn das Element .trigger den Scrollport vollständig verlassen hat.

Mehrere timeline-trigger-Werte

Dieses Beispiel baut auf dem vorherigen auf. Es zeigt, wie mehrere timeline-trigger-Werte auf demselben Element festgelegt werden können, um mehrere Trigger für mehrere Animationen zu erstellen.

HTML

Das Markup ähnelt dem vorherigen Beispiel, enthält aber ein zusätzliches animiertes <div>-Element mit der class animated2. Dieses Beispiel enthält zwei animierte Elemente und ein Element, auf dem die Trigger erstellt werden.

CSS

Wie im vorherigen Beispiel haben die animierten Elemente für position den Wert fixed. Unterschiedliche left-Werte verhindern, dass sie sich überlappen.

css
.animated,
.animated2 {
  position: fixed;
  top: 25px;
}

.animated {
  left: 25px;
}

.animated2 {
  left: 150px;
}

Wir definieren zwei Gruppen von @keyframes für die Animationen:

css
@keyframes rotate {
  from {
    rotate: 0deg;
  }

  to {
    rotate: 360deg;
  }
}

@keyframes up-down {
  0% {
    translate: 0 0;
  }

  25% {
    translate: 0 25px;
  }

  50% {
    translate: 0 0;
  }

  75% {
    translate: 0 -25px;
  }

  100% {
    translate: 0 0;
  }
}

Jedem animierten Element ist eine andere Animation zugewiesen, die durch einen eigenen Timeline-Trigger ausgelöst wird. Außerdem werden unterschiedliche <animation-action>-Werte angewendet. Wir wenden auf das Element .animated dieselbe animation wie im vorherigen Beispiel an und auf das Element .animated2 eine andere animation. Beide haben die Eigenschaft animation-trigger, jedoch mit unterschiedlichen Werten. Die erste Animation wird bei der Aktivierung abgespielt und bei der Deaktivierung rückwärts abgespielt. Die zweite wird bei der Aktivierung abgespielt und bei der Deaktivierung pausiert.

css
.animated {
  animation: rotate 3s infinite linear both;
  animation-trigger: --t play-forwards play-backwards;
}

.animated2 {
  animation: up-down 1s infinite linear;
  animation-trigger: --t2 play pause;
}

Wir legen auf .trigger einen timeline-trigger-Wert fest, der zwei Einträge enthält. Jeder Eintrag hat andere Werte für timeline-trigger-name, timeline-trigger-activation-range und timeline-trigger-active-range. Dadurch beginnen und enden die Animationen der beiden Elemente an unterschiedlichen Positionen.

css
.trigger {
  timeline-trigger:
    --t view() entry / cover,
    --t2 view() contain;
}

Ergebnis

Scrollen Sie durch den Inhalt. Das erste animierte Element beginnt sich zu drehen, wenn das beobachtete Element am unteren Rand des Scrollports in den Bereich entry gelangt. Sobald das beobachtete Element den Scrollport vollständig verlassen hat, dreht es sich rückwärts. Das zweite animierte Element beginnt sich auf und ab zu bewegen, wenn das beobachtete Element vollständig in den Scrollport eingetreten ist, und stoppt, sobald das beobachtete Element beginnt, den Scrollport zu verlassen.

Spezifikationen

Spezifikation
Animation Triggers
# propdef-timeline-trigger

Browser-Kompatibilität

Siehe auch