Une _transition_ est déclenchée par un élément qui entre ou sort du DOM suite à un changement d'état. Lorsqu'un bloc (comme un bloc `{#if ...}`) transitionne vers sa sortie, tous les éléments qu'il contient, incluant ceux n'ayant pas leurs propres transitions, sont gardés dans le DOM jusqu'à ce que chaque transition du bloc ait été appliquée. La directive `transition:` indique une transition _bidirectionnelle_, ce qui signifie qu'elle peut être inversée en douceur lorsque la transition est en cours. ```svelte {#if visible}
entre et sort en s'estompant uniquement lorsque y change
entre et sort en s'estompant uniquement lorsque x et y changent
{/if} {/if} ``` ## Transitions intégrées [!VO]Built-in transitions Une sélection de transitions intégrées peut être importée depuis le module [`svelte/transition`](svelte-transition). ## Paramètres de transition [!VO]Transition parameters Les transitions 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 {#if visible}Portez ce vieux whisky au juge blond qui fume
{/if} ``` Si une transition renvoie une fonction au lieu d'un objet de transition, la fonction sera appelée dans la micro-tâche suivante. Cela permet de coordonner plusieurs transitions, rendant les [effets de crossfade](/tutorial/deferred-transitions) possibles. Les fonctions de transitions acceptent également un troisième argument, `options`, qui peut contenir des informations à propos de la transition. Les valeurs disponibles dans l'objet `options` sont : - `direction` — `in`, `out`, ou `both` selon le type de transition ## Évènements de transition [!VO]Transition events Un élément possédant des transitions va déclencher les évènements suivants en plus des évènements standards du DOM : - `introstart` - `introend` - `outrostart` - `outroend` ```svelte {#if visible}(status = "l'entrée a démarré")} onoutrostart={() => (status = 'la sortie a démarré')} onintroend={() => (status = "l'entrée est terminée")} onoutroend={() => (status = 'la sortie est terminée')} > Entre et sort en volant
{/if} ```