Geben Sie an, wie mehrere Animationseffekte mit Animationszusammensetzung zusammengesetzt werden sollen

Ersetzen, hinzufügen oder akkumulieren? Wer weiß...

Mehrere Animationseffekte kombinieren

Mit der Eigenschaft animation-composition kann gesteuert werden, was geschehen soll, wenn mehrere Animationen gleichzeitig dieselbe Eigenschaft beeinflussen.

Unterstützte Browser

  • 112
  • 112
  • 115
  • 16

Quelle

Angenommen, Sie haben diese Basistransformation auf ein Element angewendet:

transform-origin: 50% 50%;
transform: translateX(50px) rotate(45deg);

Außerdem sind folgende Keyframes vorhanden:

@keyframes adjust {
  to {
    transform: translateX(100px);
  }
}

Wenn Sie diese Keyframes auf ein Element anwenden, ersetzt das transform im Keyframe to das vorhandene transform. Das ist das Standardverhalten.

Mit animation-composition hast du jetzt die Kontrolle darüber, was passieren soll, und nicht die standardmäßige replace. Zulässige Werte sind:

  • replace: Der Wert für die Auswirkung ersetzt den zugrunde liegenden Wert. (Standardeinstellung)
  • add: Der Wert für die Auswirkung wird dem zugrunde liegenden Wert hinzugefügt.
  • accumulate: Der Wert der Auswirkung wird mit dem zugrunde liegenden Wert kombiniert.

Der Unterschied zwischen Addition und Akkumulation ist subtil. Nehmen wir beispielsweise die beiden Werte blur(2) und blur(3). Bei Addition ergibt sich blur(2) blur(3), summiert jedoch blur(5).

Man kann das mit einer Tasse mit Tee vergleichen. Wenn Milch darin eingegossen wird, passiert Folgendes:

  • replace: Der Tee wird entfernt und durch die Milch ersetzt.
  • add: Die Milch wird in die Tasse gegeben, bleibt aber auf dem Tee geschichtet.
  • accumulate: Die Milch wird dem Tee hinzugefügt und da beide Flüssigkeiten sind, vermischen sie sich gut.

Demo

In der Demo unten sehen Sie drei graue Felder, auf die die Basis transform und animation angewendet werden.

Obwohl diese Felder dieselbe Animation haben, führen sie zu einem anderen Ergebnis, da sie unterschiedliche animation-composition-Werte enthalten:

Das erste Feld ist auf animation-composition: replace festgelegt. Das ist das Standardverhalten. An seiner Endposition wird der ursprüngliche translateX(50px) rotate(45deg)-Wert für transform einfach durch translateX(100px) ersetzt.

Das zweite Feld ist auf animation-composition: add gesetzt. An seiner Endposition wird der translateX(100px) zur ursprünglichen translateX(50px) rotate(45deg) hinzugefügt, d. h., er führt zu translateX(50px) rotate(45deg) translateX(100px). Dadurch wird der Rahmen um 50 Pixel, anschließend um 45 Grad und anschließend um 100 Pixel verschoben.

Das dritte Feld ist auf animation-composition: accumulate festgelegt. An der Endposition wird translateX(100px) mathematisch zu translateX(50px) aus der ursprünglichen Transformation addiert, was zu einer Transformation von translateX(150px) rotate(45deg) führt.

Foto von Alex Boyd bei Unsplash