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 die gleiche 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 bei einer animation-* Eigenschaft angeben, werden diese auf die Animationen in der Reihenfolge angewendet, in der die animation-names erscheinen. Wenn die Anzahl der Animationen und Kompositionen unterschiedlich ist, werden die in der Eigenschaft animation-composition aufgeführten Werte von der ersten bis zur letzten animation-name durchlaufen, bis alle Animationen einen zugewiesenen animation-composition Wert haben. Weitere Informationen finden Sie unter Festlegen mehrerer Animationswerte.
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. Bei 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. Bei 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 anvisiert wird, ist mit einem Effektstapel verbunden. 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 festzulegen, wie der zugrunde liegende Wert mit dem Effektwert kombiniert wird.
Zum Beispiel, im untenstehenden CSS ist blur(5px) der zugrunde liegende Wert, und blur(10px) ist der Effektwert. Die animation-composition Eigenschaft gibt die Operation an, die ausgeführt werden soll, um den endgültigen Effektwert nach der Komposition des Effekts des zugrunde liegenden Wertes und des Effektwertes zu erzeugen.
.icon:hover {
filter: blur(5px);
animation: 3s infinite pulse;
animation-composition: add;
}
@keyframes pulse {
0% {
filter: blur(10px);
}
100% {
filter: blur(20px);
}
}
Berücksichtigen 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 Kompositionsoperation kann auch in einem Keyframe angegeben werden. In diesem Fall wird die angegebene Kompositionsoperation 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
Beispiele
Verständnis der animation-composition Werte
Das untenstehende 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
replaceist der endgültige Effektwert für dietransformEigenschaft im0%, 20%KeyframetranslateX(100px)(vollständiges Ersetzen des zugrunde liegenden WertstranslateX(30px) rotate(45deg)). In diesem Fall dreht sich das Element von 45 Grad auf 0 Grad, während es von dem auf dem Element selbst gesetzten Standardwert zum nicht-gedrehten Wert am 0%-Markierungspunkt animiert. Dies ist das Standardverhalten. - Mit
addist der endgültige Effektwert für dietransformEigenschaft im0%, 20%KeyframetranslateX(30px) rotate(45deg)gefolgt vontranslateX(100px). Das Element wird also30pxnach rechts verschoben, um45deggedreht und dann weiter um100pxentlang der umgelenkten X-Achse übersetzt. - Mit
accumulateist der endgültige Effektwert im0%, 20%KeyframetranslateX(130px) rotate(45deg). Das bedeutet, dass die beiden X-Achse-Translationswerte von30pxund100pxkombiniert oder "akkumuliert" werden.
Spezifikationen
| Specification |
|---|
| CSS Animations Level 2 # animation-composition |
Browser-Kompatibilität
BCD tables only load in the browser
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