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 Kompositionsoperation 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 kommagetrennte Werte in einer animation-*-Eigenschaft angeben, werden diese in der Reihenfolge auf die Animationen angewendet, in der die animation-names erscheinen. Wenn die Anzahl der Animationen und Kompositionen unterschiedlich ist, werden die Werte, die in der animation-composition-Eigenschaft aufgeführt sind, von der ersten bis zur letzten animation-name durchlaufen, bis allen Animationen ein animation-composition-Wert zugewiesen wurde. Weitere Informationen finden Sie unter Festlegen mehrerer Werte für Animationseigenschaften.
Werte
replace-
Der Effektwert ersetzt den zugrundeliegenden Wert der Eigenschaft. Dies ist der Standardwert.
add-
Der Effektwert baut auf dem zugrundeliegenden 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 zugrundeliegende Wert gefolgt vom Effektwert.
accumulate-
Die Effekt- und zugrundeliegenden Werte werden kombiniert. Für Animationstypen, bei denen die Additionsoperation nicht kommutativ ist, ist die Reihenfolge der Operanden der zugrundeliegende Wert gefolgt vom Effektwert.
Beschreibung
Jede Eigenschaft, die von der @keyframes-At-Regel anvisiert wird, ist mit einem Effektstapel verbunden. Der Wert des Effektstapels wird berechnet, indem der zugrundeliegende 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 zugrundeliegende Wert mit dem Effektwert kombiniert werden soll.
Zum Beispiel ist im folgenden CSS blur(5px) der zugrundeliegende 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 Effektwerts mit dem zugrundeliegenden Wert 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 unterschiedliche Werte für die animation-composition-Eigenschaft im obigen Beispiel. Der endgültige Effektwert in jedem dieser Fälle wird wie folgt berechnet:
- Mit
replacewirdblur(10px)im0%-Keyframeblur(5px)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 für jede Eigenschaft innerhalb dieses Keyframes verwendet und anschließend 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 animation-composition-Werte
Das folgende Beispiel zeigt die Wirkung 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 zugrundeliegende 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)(ersetzt vollständig den zugrundeliegenden WerttranslateX(30px) rotate(45deg)). In diesem Fall dreht sich das Element von 45 Grad auf 0 Grad, wenn es sich von dem Standardwert des Elements selbst zum nicht-gedrehten Wert am 20%-Punkt bewegt. Dies ist das Standardverhalten. - Mit
addist der endgültige Effektwert für dietransform-Eigenschaft im20%, 40%-KeyframetranslateX(30px) rotate(45deg) translateX(100px). Das Element wird also zuerst 100px nach rechts verschoben, um 45 Grad um den Ursprung gedreht und dann erneut um 30px nach rechts verschoben. - Mit
accumulateist der endgültige Effektwert im20%, 40%-KeyframetranslateX(130px) rotate(45deg). Das bedeutet, dass die beiden X-Achsen-Translationswerte30pxund100pxkombiniert oder "akkumuliert" werden.
Spezifikationen
| Specification |
|---|
| CSS Animations Level 2> # animation-composition> |
Browser-Kompatibilität
Loading…
Siehe auch
- Verwenden von CSS-Animationen
- Zusammengesetzte Eigenschaft von KeyFrameEffect
- Andere verwandte Animations-Eigenschaften:
animation,animation-delay,animation-direction,animation-duration,animation-fill-mode,animation-iteration-count,animation-name,animation-play-state,animation-timeline,animation-timing-function