animation-composition CSS property
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2023 browserübergreifend verfügbar.
Die animation-composition-Eigenschaft von CSS legt die Zusammensetzungsoperation fest, die verwendet wird, 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 in einer animation-* Eigenschaft angeben, werden diese in der Reihenfolge angewendet, in der die animation-names erscheinen. Wenn die Anzahl der Animationen und der Zusammensetzungen unterschiedlich ist, werden die aufgelisteten Werte in der animation-composition-Eigenschaft vom ersten bis zum letzten animation-name durchlaufen, bis alle Animationen einen zugewiesenen animation-composition-Wert haben. Weitere Informationen finden Sie unter Mehrere Animations-Werte festlegen.
Werte
replace-
Der Effektwert überschreibt den darunterliegenden Wert der Eigenschaft. Dies ist der Standardwert.
add-
Der Effektwert baut auf dem darunterliegenden Wert der Eigenschaft auf. Diese Operation erzeugt einen additiven Effekt. Bei Animationstypen, bei denen die Addition nicht kommutativ ist, erfolgt die Reihenfolge der Operanden durch den darunterliegenden Wert, gefolgt vom Effektwert.
accumulate-
Die Effekt- und darunterliegenden Werte werden kombiniert. Bei Animationstypen, bei denen die Addition nicht kommutativ ist, erfolgt die Reihenfolge der Operanden durch den darunterliegenden Wert, gefolgt vom Effektwert.
Beschreibung
Jede Eigenschaft, die von der @keyframes At-Regel angesprochen wird, ist mit einem Effektstapel verbunden. Der Wert des Effektstapels wird berechnet, indem der darunterliegende Wert einer Eigenschaft in einer CSS-Stilregel mit dem Effektwert dieser Eigenschaft im Keyframe kombiniert wird. Die Eigenschaft animation-composition hilft, festzulegen, wie der darunterliegende Wert mit dem Effektwert kombiniert werden soll.
Zum Beispiel, im untenstehenden CSS ist blur(5px) der darunterliegende Wert und blur(10px) der Effektwert. Die animation-composition-Eigenschaft gibt an, welche Operation ausgeführt werden soll, um den endgültigen Effektwert nach der Zusammensetzung des darunterliegenden Werts und des Effektwerts zu erhalten.
.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 unten erklärt berechnet:
- Mit
replacewirdblur(10px)blur(5px)im0%-Keyframe ersetzen. Dies ist das Standardverhalten der Eigenschaft. - Mit
addwird der zusammengesetzte Effektwert im0%-Keyframeblur(5px) blur(10px)sein. - Mit
accumulatewird der zusammengesetzte Effektwert im0%-Keyframeblur(15px)sein.
Hinweis: Eine Zusammensetzungsoperation kann auch in einem Keyframe angegeben werden. In diesem Fall wird die angegebene Zusammensetzungsoperation zuerst auf jede Eigenschaft innerhalb dieses Keyframes und dann auf jede Eigenschaft im nächsten Keyframe angewendet.
Formale Definition
| Anfangswert | replace |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | Not animatable |
Formale Syntax
animation-composition =
<single-animation-composition>#
<single-animation-composition> =
replace |
add |
accumulate
Beispiele
>Verständnis der Werte von animation-composition
Das untenstehende Beispiel zeigt den Effekt unterschiedlicher 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 darunterliegende 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
replaceist der endgültige Effektwert für die Eigenschafttransformim20%, 40%-KeyframetranslateX(100px)(es ersetzt vollständig den darunterliegenden WerttranslateX(30px) rotate(45deg)). In diesem Fall dreht das Element von 45 Grad auf 0 Grad, während es von dem auf das Element selbst gesetzten Standardwert zu dem bei 20% gesetzten nicht rotierenden Wert animiert. Dies ist das Standardverhalten. - Mit
addist der endgültige Effektwert für die Eigenschafttransformim20%, 40%-KeyframetranslateX(30px) rotate(45deg) translateX(100px). Das Element wird zuerst um 100px nach rechts verschoben, dreht sich um 45 Grad um den Ursprung und bewegt sich dann um 30px nach rechts. - Mit
accumulateist der endgültige Effektwert im20%, 40%-KeyframetranslateX(130px) rotate(45deg). Das bedeutet, dass die beiden X-Achsen-Translationswerte von30pxund100pxkombiniert oder "akkumuliert" werden.
Spezifikationen
| Spezifikation |
|---|
| CSS Animations Level 2> # animation-composition> |
Browser-Kompatibilität
Siehe auch
- Verwendung von CSS-Animationen
- Zusammengesetzte Eigenschaft 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