Animation-composition - Propriété CSS
Résumé des caractéristiques de la propriété animation-composition
replace | add | accumulatereplaceanimation-composition ne peut pas être animée.Single : valeur unique (l'ordre n'intervient pas).Syntaxe de animation-composition (schéma).
Description de la propriété animation-composition.
La propriété animation-composition définit comment doivent interagir plusieurs animations appliquées en même temps à une même propriété.
Notez bien que si plusieurs animations sont appliquées à un élément sur des propriétés différentes, animation-composition sera sans effet.
Mais notez aussi que la propriété transform peut générer des effets très différents (rotations, changements d'échelle, déplacements...)
mais qu'elle est malgré tout une propriété unique.
Considérons les deux animations définies ci-dessous, concernant toutes les deux la propriété scale (changement d'échelle) :
@keyframes zoom1 {
from {scale:0.5;}
to {scale:1.5;}
}
@keyframes zoom2 {
from {scale:0.5;}
to {scale:1.5;}
}
Et appliquons simultanément les deux animations aux éléments ci-dessous, chacun d'eux ayant une valeur différente pour leur propriété animation-composition.
animation: zoom1 2s infinite alternate, zoom2 2s infinite alternate;
replaceaddaccumulate
Pour une présentation générale des animations, reportez-vous à la page animations en CSS.
Et pour des explications sur les animations multiples.
Valeurs pour animation-composition.
- animation-composition: replace;
Avec cette syntaxe, seule la dernière animation est active. Tout se passe donc comme si une seule animation avait été appliquée à la propriété.
animation-composition:replace; - animation-composition: add;
La valeur résultante est déterminée en appliquant successivement chacune des animations.
animation-composition:add; - animation-composition: accumulate;
La valeur résultante est déterminée en appliquant à la propriété une valeur calculée à partir de chacune des animations. Pour la plupart des propriétés et des animations,
accumulatedonne le même résultat queaddou un résultat peu différent.animation-composition:accumulate;Comparaison entre les valeurs
addetaccumulate:Exemple : avec deux animations sur la propriété
scale. La première animation en est, dans son cycle, à la valeur1.5, tandis que la deuxième en est à1.2.Avec
addon appliquescale:1.5;, puisscale:1.2;, soitscale:1.8;.
avecaccumulate, on appliquescale:2.7;Mais comme nous l'avons dit, pour la plupart des animations, le résultat de ces deux valeurs est identique. Par exemple pour la propriété
rotate:rotate:30deg;est équivalent àrotate:10deg;suivi derotate:20deg;.Le résultat peut également différer si les animations sont appliquées avec des durées différents ou des fonctions d'accélération différentes (voir
animation-timing-function). - animation-composition: initial; (
replace) animation-composition: inherit; animation-composition: revert; animation-composition: revertLayer; animation-composition: unset;Liens vers la présentation de ces différentes valeurs :
initial,inherit,revert,revert-layer,unset.
Exemples avec la propriété animation-composition.
C'est décidément en animant la propriété transform que les effets sont le plus visibles, en particulier les différences entre les valeurs
add et accumulate pour la propriété animation-composition.
Dans cet exemple, nous avons appliqué deux fois la même animation, avec les mêmes paramètres de durée et de fonction d'accélération.
La directive @keyframes est visible en cliquant sur le bouton.
animation-composition:
replace;animation-composition:
add;animation-composition:
accumulate;Possibilité d'animation de la propriété animation-composition.
Étant elle-même une propriété définissant les animations, animation-composition ne peut pas être animée.
La propriété animation-composition et Javascript.
Avec Javascript, modifier la valeur de animation-composition.
En Javascript, voici comment modifier la valeur de animation-composition.
Javascript propose une syntaxe avec la notation typique de CSS, en kebab-case (un tiret pour séparer les mots),
et une syntaxe avec la notation en camel-case (une majuscule pour séparer les mots).

let el = document.getElementById('id');
el.style['animation-composition'] = 'accumulate';
// ou
let el = document.getElementById('id');
el.style.animationComposition = 'accumulate';
Avec Javascript, lire la valeur de animation-composition.
La propriété doit avoir été affectée directement à l'élément lui-même via son attribut style, et non pas dans la feuille de styles, en passant
par un sélecteur CSS.

let el = document.getElementById('id');
let value = el.style['animation-composition'];
// ou
let el = document.getElementById('id');
let value = el.style.animationComposition;
Avec Javascript, lire la valeur calculée de animation-composition.
La valeur calculée est celle qui résulte de l'évaluation de la cascade des héritages. A défaut, c'est la valeur initiale qui est renvoyée
( dans le cas de replaceanimation-composition). La valeur calculée existe toujours.

let el = document.getElementById('id');
let value = window.getComputedStyle(el).getPropertyValue('animation-composition');
Avec JQuery, modifier la valeur de animation-composition.
On retrouve des syntaxes équivalentes en JQuery.

$('#id').css('animation-composition', 'accumulate');
// ou
$('#id').css('animationComposition', 'accumulate');
Avec JQuery, lire la valeur calculée de animation-composition.

let value = $('#id').css('animation-composition');
Autres exemples de code.
Voir également la page Javascript et CSS pour d'autres exemples de code Javascript ou JQuery.
Testez vous-même.
Les boutons ci-dessous appliquent la valeur saisie à la propriété animation-composition et affichent ensuite soit la valeur telle qu'elle a été appliquée
pour le premier bouton, soit la valeur calculée pour le deuxième bouton. Dans le cas de animation-composition ces deux valeurs seront les mêmes puisque
la propriété n'accepte que des valeurs prédéfinies.
Simulateur avec la propriété animation-composition.
Deux animations ont été définie sur la propriété rotate, et paramétrées pour être l'inverse l'une de l'autre : la première effectue une rotation
depuis 0 degrés vers 90 degrés, et la deuxième part de 90 degrés pour aller vers 0 degrés.
Ces deux animations sont appliquées avec des durées et des fonctions d'accélération identiques sur le premier bloc : on constate que les valeurs add
et accumulate pour la propriété animation-composition donnent une animation résultante nulle. Par contre si les durées ou les fonctions d'accélération
sont différentes, le résultat est un mouvement assez complexe.
Support de animation-composition.
animation-composition.animations
animation-compositionNavigateurs sur ordinateurs :
Navigateurs sur mobiles :
Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Chrome

Edge

Opéra

Safari

Safari sur IOS

Androïd Brower

Chrome pour Androïd

Firefox pour Androïd

Samsung Internet

Firefox

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini
Évolution de la propriété animation-composition.
-
Module CSS - Animations Niveau 2
Première définition pouranimation-composition.02 Mars 2023Document de travail.
Voir aussi, au sujet des animations.
Tout ce qui concerne les animations est regroupé dans le module de spécification du W3C CSS Animations. Il s'agit essentiellement d'une directive et de plusieurs propriétés.
Propriétés :
@keyframes.@keyframes) appliquer à l'élément. 


