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 CSS Eigenschaft legt die Compositing-Operation 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;
Werte
Diese Eigenschaft wird als ein oder mehrere durch Kommas getrennte Schlüsselwörter angegeben:
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 gefolgt vom 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 gefolgt vom Effektwert.
Beschreibung
Jede Eigenschaft, die durch die @keyframes At-Regel angesprochen 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 Eigenschaft animation-composition hilft dabei, festzulegen, wie der zugrunde liegende Wert mit dem Effektwert kombiniert werden soll.
In dem unten stehenden CSS-Beispiel ist blur(5px) der zugrunde liegende Wert und blur(10px) der Effektwert. Die Eigenschaft animation-composition gibt die Operation an, die durchgeführt werden soll, um den abschließenden Effektwert nach dem Compositing des Effektwerts und des zugrunde liegenden Werts 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 Eigenschaft animation-composition im obigen Beispiel. Der finale Effektwert wird in jedem dieser Fälle wie folgt 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)betragen.
Hinweis: Eine Compositing-Operation kann auch in einem Keyframe angegeben werden. In diesem Fall wird die angegebene Compositing-Operation zuerst für jede Eigenschaft innerhalb dieses Keyframes und dann für jede Eigenschaft im nächsten Keyframe verwendet.
Mehrere Werte
Wenn Sie mehrere durch Kommas getrennte Werte für eine animation-*-Eigenschaft angeben, werden diese 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 aufgelisteten Werte von der ersten bis zur letzten animation-name weitergeführt, bis allen Animationen ein animation-composition-Wert zugewiesen ist. Weitere Informationen finden Sie unter Festlegen mehrerer Animations-Eigenschaftswerte.
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 folgende Beispiel zeigt die Wirkung 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
@keyframes slide {
50% {
transform: translateY(30px);
}
100% {
transform: translateX(150px);
}
}
.target {
transform: translateX(30px) rotate(45deg);
animation: slide 5s linear infinite;
}
#replace {
animation-composition: replace;
}
#add {
animation-composition: add;
}
#accumulate {
animation-composition: accumulate;
}
Ergebnis
Der zugrunde liegende Wert für die transform-Eigenschaft in allen Fällen ist translateX(30px) rotate(45deg). Die Effekte der verschiedenen animation-composition-Werte sind wie folgt:
-
Bei
replaceersetzt dietransform-Eigenschaft in jedem Keyframe vollständig die zugrunde liegendetransform-Eigenschaft, die auf das animierte Element angewendet wird. Der finale Effektwert für dietransform-Eigenschaft im50%-Keyframe isttranslateY(30px)(keinrotateodertranslateX); im100%-Keyframe ist estranslateX(150px)(keinrotateodertranslateY).Das Ziel beginnt bei
transform: translateX(30px) rotate(45deg)und animiert effektiv zutransform: translateY(30px), dann zutransform: translateX(150px). -
Bei
addist der finale Effektwert in jedem Keyframe der zugrunde liegendetransform-Wert mit dem Effektwert, der unmittelbar danach platziert wird.Daher beginnt das Ziel bei
transform: translateX(30px) rotate(45deg)und animiert effektiv zuerst zutransform: translateX(30px) rotate(45deg) translateY(30px)(was30px"nach unten" auf der gedrehten Y-Achse ist), und dann zutransform: translateX(30px) rotate(45deg) translateX(150px). Da die additiv Operation relativ zum zugrunde liegendentransformund nicht zum vorherigen Keyframe ist, gibt es bei100%keintranslateY(30px), wodurch das Element150pxentlang der gedrehten X-Achse von der ursprünglichen Position entfernt wird. -
Bei
accumulateist der finale Effektwert der Effekttransformdes Keyframes, kombiniert mit dem ursprünglichen zugrunde liegenden. Bei50%wirdtranslateY(30px)mit dem ursprünglichentranslateX(30px)zu einer einzigen Translation kombiniert (translate(30px, 30px)). Bei100%kombiniert sichtranslateX(150px)mit dem ursprünglichentranslateX(30px)zutranslateX(180px).Daher beginnt das Ziel bei
transform: translateX(30px) rotate(45deg)und animiert effektiv zuerst zutransform: translate(30px, 30px) rotate(45deg), und dann zutransform: translateX(180px) rotate(45deg).
Spezifikationen
| Spezifikation |
|---|
| CSS Animations Level 2> # animation-composition> |
Browser-Kompatibilität
Siehe auch
- CSS-Animationen verwenden
- Composite-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