animation-composition
Baseline
2023
Newly 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 Zusammensetzungsoperation an, 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 auf einer animation-*-Eigenschaft spezifizieren, werden diese in der Reihenfolge auf die Animationen angewendet, in der die animation-names erscheinen. Wenn die Anzahl der Animationen und Zusammensetzungen unterschiedlich ist, werden die im animation-composition-Eigenschaft gelisteten Werte von dem ersten bis zum letzten animation-name durchlaufen, bis allen Animationen ein animation-composition-Wert zugewiesen ist. Weitere Informationen finden Sie unter Festlegen mehrerer Animationsproperty-Werte.
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, folgt die Reihenfolge der Operanden dem zugrunde liegenden Wert und dann dem Effektwert.
accumulate-
Die Effekt- und zugrunde liegenden Werte werden kombiniert. Bei Animationstypen, bei denen die Additionsoperation nicht kommutativ ist, folgt die Reihenfolge der Operanden dem zugrunde liegenden Wert und dann dem Effektwert.
Beschreibung
Jede Eigenschaft, die durch die @keyframes-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 zu spezifizieren, wie der zugrunde liegende Wert mit dem Effektwert kombiniert werden soll.
Zum Beispiel ist im folgenden CSS blur(5px) der zugrunde liegende Wert, und blur(10px) ist der Effektwert. Die animation-composition-Eigenschaft spezifiziert die Operation, die durchgeführt werden soll, um den endgültigen Effektwert nach dem Zusammenführen 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
replaceersetztblur(10px)blur(5px)im0%Keyframe. Dies ist das standardmäßige Verhalten der Eigenschaft. - Mit
addist der zusammengesetzte Effektwert im0%Keyframeblur(5px) blur(10px). - Mit
accumulateist der zusammengesetzte Effektwert im0%Keyframeblur(15px).
Hinweis: Eine Zusammensetzungsoperation kann auch in einem Keyframe spezifiziert werden. In diesem Fall wird die spezifizierte Zusammensetzungsoperation zuerst für jede Eigenschaft innerhalb dieses Keyframes und dann für 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
animation-composition =
<single-animation-composition>#
<single-animation-composition> =
replace |
add |
accumulate
Beispiele
>Verständnis der animation-composition Werte
Das folgende Beispiel zeigt nebeneinander die Wirkung unterschiedlicher animation-composition Werte.
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 dietransform-Eigenschaft im20%, 40%KeyframetranslateX(100px)(vollständiges Ersetzen des zugrunde liegenden WertstranslateX(30px) rotate(45deg)). In diesem Fall dreht sich das Element von 45 Grad zu 0 Grad, während es von dem standardmäßig auf das Element selbst gesetzten Wert zu dem nicht gedrehten Wert bei der 20-%-Marke animiert. Dies ist das standardmäßige Verhalten. - Mit
addist der endgültige Effektwert für dietransform-Eigenschaft im20%, 40%KeyframetranslateX(30px) rotate(45deg) translateX(100px). So wird das Element zuerst 100px nach rechts verschoben, um 45 Grad um den Ursprung gedreht und dann um weitere 30px nach rechts verschoben. - Mit
accumulateist der endgültige Effektwert im20%, 40%KeyframetranslateX(130px) rotate(45deg). Dies bedeutet, dass die beiden X-Achsen-Übersetzungswerte von30pxund100pxkombiniert oder "akkumuliert" werden.
Spezifikationen
| Specification |
|---|
| 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