animation-composition
Baseline 2023Newly available
Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die animation-composition
CSS-Eigenschaft gibt die Kompositionsoperation an, die verwendet werden soll, wenn mehrere Animationen gleichzeitig dieselbe Eigenschaft beeinflussen.
Syntax
/* Single animation */
animation-composition: replace;
animation-composition: add;
animation-composition: accumulate;
/* Multiple animations */
animation-composition: replace, add;
animation-composition: add, accumulate;
animation-composition: replace, add, accumulate;
/* Global values */
animation-composition: inherit;
animation-composition: initial;
animation-composition: revert;
animation-composition: revert-layer;
animation-composition: unset;
Hinweis:
Wenn Sie mehrere durch Kommas getrennte Werte für eine animation-*
-Eigenschaft angeben, werden diese auf die Animationen in der Reihenfolge angewendet, in der die animation-name
s erscheinen. Wenn die Anzahl der Animationen und Kompositionen unterschiedlich ist, werden die in der animation-composition
-Eigenschaft aufgeführten Werte von dem ersten bis zum letzten animation-name
durchlaufen und wiederholt, bis alle Animationen einen zugewiesenen animation-composition
-Wert haben. Weitere Informationen finden Sie unter Festlegen mehrerer Animationswerteigenschaften.
Werte
replace
-
Der Effektwert überschreibt den zugrunde liegenden Wert der Eigenschaft. Dies ist der Standardwert.
add
-
Der Effektwert baut auf dem zugrunde liegenden Wert der Eigenschaft auf. Diese Operation erzeugt einen additiven Effekt. Für Animationstypen, bei denen die Additionsoperation nicht kommutativ ist, ist die Reihenfolge der Operanden der zugrunde liegende Wert gefolgt vom Effektwert.
accumulate
-
Die Effekt- und zugrunde liegenden Werte werden kombiniert. Für Animationstypen, bei denen die Additionsoperation nicht kommutativ ist, ist die Reihenfolge der Operanden der zugrunde liegende Wert gefolgt vom Effektwert.
Beschreibung
Jede Eigenschaft, die durch die @keyframes At-Regel angesprochen wird, ist mit einem Effektstapel verknüpft. Der Wert des Effektstapels wird berechnet, indem der zugrunde liegende Wert einer Eigenschaft in einer CSS-Stilregel mit dem Effektwert dieser Eigenschaft im Keyframe kombiniert wird. Die animation-composition
-Eigenschaft hilft dabei zu spezifizieren, wie der zugrunde liegende Wert mit dem Effektwert kombiniert werden soll.
Zum Beispiel, im untenstehenden CSS ist blur(5px)
der zugrunde liegende Wert, und blur(10px)
ist der Effektwert. Die animation-composition
-Eigenschaft gibt an, welche Operation ausgeführt werden soll, um den endgültigen Effektwert nach dem Zusammenfügen des zugrunde liegenden Werts und des Effektwerts zu erzeugen.
.icon:hover {
filter: blur(5px);
animation: 3s infinite pulse;
animation-composition: add;
}
@keyframes pulse {
0% {
filter: blur(10px);
}
100% {
filter: blur(20px);
}
}
Betrachten Sie verschiedene Werte für die animation-composition
-Eigenschaft im obigen Beispiel. Der endgültige Effektwert in jedem dieser Fälle wird wie folgt berechnet:
- Mit
replace
wirdblur(10px)
blur(5px)
im0%
-Keyframe ersetzen. Dies ist das Standardverhalten der Eigenschaft. - Mit
add
wird der zusammengesetzte Effektwert im0%
-Keyframeblur(5px) blur(10px)
sein. - Mit
accumulate
wird der zusammengesetzte Effektwert im0%
-Keyframeblur(15px)
sein.
Hinweis: Eine Kompositionsoperation kann auch in einem Keyframe angegeben werden. In diesem Fall wird die angegebene Kompositionsoperation zuerst für jede Eigenschaft innerhalb dieses Keyframes und dann auf jede Eigenschaft im nächsten Keyframe verwendet.
Formale Definition
Anfangswert | replace |
---|---|
Anwendbar auf | alle Elemente |
Vererbt | Nein |
Berechneter Wert | wie angegeben |
Animationstyp | Not animatable |
Formale Syntax
Beispiele
Verständnis der animation-composition Werte
Das folgende Beispiel zeigt den Effekt verschiedener animation-composition
-Werte nebeneinander.
HTML
<div class="container">
replace
<div id="replace" class="target"></div>
</div>
<div class="container">
add
<div id="add" class="target"></div>
</div>
<div class="container">
accumulate
<div id="accumulate" class="target"></div>
</div>
CSS
Hier ist der zugrunde liegende Wert translateX(50px) rotate(45deg)
.
@keyframes slide {
20%,
40% {
transform: translateX(100px);
background: yellow;
}
80%,
100% {
transform: translateX(150px);
background: orange;
}
}
.target {
transform: translateX(30px) rotate(45deg);
animation: slide 5s linear infinite;
}
.target:hover {
animation-play-state: paused;
}
#replace {
animation-composition: replace;
}
#add {
animation-composition: add;
}
#accumulate {
animation-composition: accumulate;
}
Ergebnis
- Mit
replace
ist der endgültige Effektwert für dietransform
-Eigenschaft im20%, 40%
-KeyframetranslateX(100px)
(vollständiger Ersatz des zugrunde liegenden WertstranslateX(30px) rotate(45deg)
). In diesem Fall dreht sich das Element während der Animation vom Standardwert, der auf das Element selbst gesetzt ist, bis zum nicht rotierten Wert, der bei der 20%-Marke festgelegt ist, von 45 Grad auf 0 Grad. Dies ist das Standardverhalten. - Mit
add
ist der endgültige Effektwert für dietransform
-Eigenschaft im20%, 40%
-KeyframetranslateX(30px) rotate(45deg) translateX(100px)
. So wird das Element zuerst 100px nach rechts bewegt, um 45 Grad um den Ursprung gedreht und dann um 30px nach rechts bewegt. - Mit
accumulate
ist der endgültige Effektwert im20%, 40%
-KeyframetranslateX(130px) rotate(45deg)
. Das bedeutet, dass die beiden X-Achsen-Translationswerte von30px
und100px
kombiniert oder "akkumuliert" werden.
Spezifikationen
Specification |
---|
CSS Animations Level 2 # animation-composition |
Browser-Kompatibilität
Siehe auch
- Verwendung von CSS-Animationen
- Kompositionseigenschaft von KeyFrameEffect
- Andere verwandte Animationseigenschaften:
animation
,animation-delay
,animation-direction
,animation-duration
,animation-fill-mode
,animation-iteration-count
,animation-name
,animation-play-state
,animation-timeline
,animation-timing-function