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-Eigenschaft von CSS legt fest, welche Kompositionsoperation 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 auf einer animation-* Eigenschaft mehrere durch Komma getrennte Werte 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 in der animation-composition-Eigenschaft aufgelisteten Werte zyklisch von der ersten bis zur letzten animation-name-Angabe 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 Addition nicht kommutativ ist, erfolgt die Reihenfolge der Operanden vom zugrunde liegenden Wert gefolgt vom Effektwert.
accumulate-
Der Effekt- und der zugrunde liegende Wert werden kombiniert. Für Animationstypen, bei denen die Addition nicht kommutativ ist, erfolgt die Reihenfolge der Operanden vom zugrunde liegenden Wert gefolgt vom Effektwert.
Beschreibung
Jede Eigenschaft, die durch die @keyframes at-Regel angesprochen wird, ist mit einem Effektstapel verbunden. Der Wert des Effektstapels wird durch die Kombination des zugrunde liegenden Werts einer Eigenschaft in einer CSS-Stilregel mit dem Effektwert dieser Eigenschaft im Keyframe berechnet. Die animation-composition-Eigenschaft hilft dabei, festzulegen, wie der zugrunde liegende Wert mit dem Effektwert kombiniert wird.
Zum Beispiel wird im folgenden CSS blur(5px) als zugrunde liegender Wert und blur(10px) als Effektwert betrachtet. Die animation-composition-Eigenschaft gibt an, welche Operation durchgeführt wird, um den endgültigen Effektwert nach der Komposition des Effektwerts mit dem zugrunde liegenden Wert 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 unterschiedliche Werte der 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 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
animation-composition =
<single-animation-composition>#
<single-animation-composition> =
replace |
add |
accumulate
Beispiele
>Verständnis der animation-composition-Werte
Das folgende 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 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 Standardwert, der auf das Element selbst eingestellt ist, zu dem nicht gedrehten Wert am 20%-Wert animiert wird. 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 um 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-Translationswerte von30pxund100pxkombiniert oder "akkumuliert" werden.
Spezifikationen
| Specification |
|---|
| CSS Animations Level 2> # animation-composition> |
Browser-Kompatibilität
Loading…
Siehe auch
- Verwendung von CSS-Animationen
- Composite-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