Une animation est déclenchée lorsque le contenu d'un [bloc `each` à clé](each#Keyed-each-blocks) est
réordonné. Les animations ne sont pas joués lorsqu'un élément est ajouté ou enlevé, uniquement
lorsque l'indice d'un élément existant au sein du bloc `each` change. Les directives d'animation
doivent être appliquées sur des éléments _immédiatement_ enfant d'un bloc `each` à clé.
Les animation peuvent être utilisées avec les [fonctions d'animation intégrées](svelte-animate) à
Svelte ou avec des [fonctions d'animation personnalisées](#Custom-animation-functions).
```svelte
{#each list as item, index (item)}
{item}
{/each}
```
## Paramètres d'animation [!VO]Animation Parameters
Comme pour les actions et les transitions, les animations peuvent avoir des paramètres.
(Les doubles `{{accolades}}` ne sont pas une syntaxe spéciale ; il s'agit simplement d'un objet
défini au sein d'une balise d'expression.)
```svelte
{#each list as item, index (item)}
{item}
{/each}
```
## Fonctions d'animation personnalisées [!VO]Custom animation functions
```js
/// copy: false
// @noErrors
animation = (node: HTMLElement, { from: DOMRect, to: DOMRect } , params: any) => {
delay?: number,
duration?: number,
easing?: (t: number) => number,
css?: (t: number, u: number) => string,
tick?: (t: number, u: number) => void
}
```
Les animations peuvent utiliser des fonctions personnalisées fournissant un `node`, un objet
d'`animation` et tout `parameters` comme arguments. Le paramètre `animation` est un objet contenant
les propriétés `from` et `to`, chacune contenant un
[DOMRect](https://developer.mozilla.org/fr/docs/Web/API/DOMRect#Properties) décrivant la géométrie
de l'élément dans ses positions `start` et `end`. La propriété `from` est le DOMRect de l'élément
dans sa position de départ, la propriété `to` est le DOMRect de l'élément dans sa position finale
après que la liste ait été réordonnée et le DOM mis à jour.
Si l'objet renvoyé a une méthode `css`, Svelte va créer une [animation
web](https://developer.mozilla.org/fr/docs/Web/API/Web_Animations_API) qui sera jouée sur l'élément.
L'argument `t` passé à `css` est une valeur entre `0` et `1` après l'application de la fonction
`easing`. L'argument `u` est égal à `1 - t`.
La fonction est appelée de manière répétée _avant_ le début de la transition, avec des valeurs de
`t` et `u` différentes.
```svelte
{#each list as item, index (item)}
{item}
{/each}
```
Une fonction d'animation personnalisée peut également renvoyer une fonction `tick`, qui sera appelée
_pendant_ l'animation avec les mêmes arguments `t` et `u`.
> [!NOTE] Si vous avez la possibilité d'utiliser `css` au lieu de `tick`, faites-le - les animations
> web sont gérées hors du fil d'exécution principal (_main thread_), ce qui permet d'éviter des
> ralentissements sur des appareils moins performants.
```svelte
{#each list as item, index (item)}
{item}
{/each}
```