mirror of https://github.com/sveltejs/svelte
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							283 lines
						
					
					
						
							8.2 KiB
						
					
					
				
			
		
		
	
	
							283 lines
						
					
					
						
							8.2 KiB
						
					
					
				| ---
 | |
| title: 'svelte/transition'
 | |
| ---
 | |
| 
 | |
| The `svelte/transition` module exports seven functions: `fade`, `blur`, `fly`, `slide`, `scale`, `draw` and `crossfade`. They are for use with Svelte [`transitions`](/docs/element-directives#transition-fn).
 | |
| 
 | |
| ## `fade`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#fade
 | |
| 
 | |
| ```svelte
 | |
| transition:fade={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| in:fade={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| out:fade={params}
 | |
| ```
 | |
| 
 | |
| Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.
 | |
| 
 | |
| `fade` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `duration` (`number`, default 400) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `linear`) — an [easing function](/docs/svelte-easing)
 | |
| 
 | |
| You can see the `fade` transition in action in the [transition tutorial](https://learn.svelte.dev/tutorial/transition).
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { fade } from 'svelte/transition';
 | |
| </script>
 | |
| 
 | |
| {#if condition}
 | |
| 	<div transition:fade={{ delay: 250, duration: 300 }}>fades in and out</div>
 | |
| {/if}
 | |
| ```
 | |
| 
 | |
| ## `blur`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#blur
 | |
| 
 | |
| ```svelte
 | |
| transition:blur={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| in:blur={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| out:blur={params}
 | |
| ```
 | |
| 
 | |
| Animates a `blur` filter alongside an element's opacity.
 | |
| 
 | |
| `blur` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `duration` (`number`, default 400) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `cubicInOut`) — an [easing function](/docs/svelte-easing)
 | |
| - `opacity` (`number`, default 0) - the opacity value to animate out to and in from
 | |
| - `amount` (`number | string`, default 5) - the size of the blur. Supports css units (for example: `"4rem"`). The default unit is `px`
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { blur } from 'svelte/transition';
 | |
| </script>
 | |
| 
 | |
| {#if condition}
 | |
| 	<div transition:blur={{ amount: 10 }}>fades in and out</div>
 | |
| {/if}
 | |
| ```
 | |
| 
 | |
| ## `fly`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#fly
 | |
| 
 | |
| ```svelte
 | |
| transition:fly={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| in:fly={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| out:fly={params}
 | |
| ```
 | |
| 
 | |
| Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.
 | |
| 
 | |
| `fly` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `duration` (`number`, default 400) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `cubicOut`) — an [easing function](/docs/svelte-easing)
 | |
| - `x` (`number | string`, default 0) - the x offset to animate out to and in from
 | |
| - `y` (`number | string`, default 0) - the y offset to animate out to and in from
 | |
| - `opacity` (`number`, default 0) - the opacity value to animate out to and in from
 | |
| 
 | |
| x and y use `px` by default but support css units, for example `x: '100vw'` or `y: '50%'`.
 | |
| You can see the `fly` transition in action in the [transition tutorial](https://learn.svelte.dev/tutorial/adding-parameters-to-transitions).
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { fly } from 'svelte/transition';
 | |
| 	import { quintOut } from 'svelte/easing';
 | |
| </script>
 | |
| 
 | |
| {#if condition}
 | |
| 	<div
 | |
| 		transition:fly={{ delay: 250, duration: 300, x: 100, y: 500, opacity: 0.5, easing: quintOut }}
 | |
| 	>
 | |
| 		flies in and out
 | |
| 	</div>
 | |
| {/if}
 | |
| ```
 | |
| 
 | |
| ## `slide`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#slide
 | |
| 
 | |
| ```svelte
 | |
| transition:slide={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| in:slide={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| out:slide={params}
 | |
| ```
 | |
| 
 | |
| Slides an element in and out.
 | |
| 
 | |
| `slide` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `duration` (`number`, default 400) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `cubicOut`) — an [easing function](/docs/svelte-easing)
 | |
| 
 | |
| * `axis` (`x` | `y`, default `y`) — the axis of motion along which the transition occurs
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { slide } from 'svelte/transition';
 | |
| 	import { quintOut } from 'svelte/easing';
 | |
| </script>
 | |
| 
 | |
| {#if condition}
 | |
| 	<div transition:slide={{ delay: 250, duration: 300, easing: quintOut, axis: 'x' }}>
 | |
| 		slides in and out horizontally
 | |
| 	</div>
 | |
| {/if}
 | |
| ```
 | |
| 
 | |
| ## `scale`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#scale
 | |
| 
 | |
| ```svelte
 | |
| transition:scale={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| in:scale={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| out:scale={params}
 | |
| ```
 | |
| 
 | |
| Animates the opacity and scale of an element. `in` transitions animate from an element's current (default) values to the provided values, passed as parameters. `out` transitions animate from the provided values to an element's default values.
 | |
| 
 | |
| `scale` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `duration` (`number`, default 400) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `cubicOut`) — an [easing function](/docs/svelte-easing)
 | |
| - `start` (`number`, default 0) - the scale value to animate out to and in from
 | |
| - `opacity` (`number`, default 0) - the opacity value to animate out to and in from
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { scale } from 'svelte/transition';
 | |
| 	import { quintOut } from 'svelte/easing';
 | |
| </script>
 | |
| 
 | |
| {#if condition}
 | |
| 	<div transition:scale={{ duration: 500, delay: 500, opacity: 0.5, start: 0.5, easing: quintOut }}>
 | |
| 		scales in and out
 | |
| 	</div>
 | |
| {/if}
 | |
| ```
 | |
| 
 | |
| ## `draw`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#draw
 | |
| 
 | |
| ```svelte
 | |
| transition:draw={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| in:draw={params}
 | |
| ```
 | |
| 
 | |
| ```svelte
 | |
| out:draw={params}
 | |
| ```
 | |
| 
 | |
| Animates the stroke of an SVG element, like a snake in a tube. `in` transitions begin with the path invisible and draw the path to the screen over time. `out` transitions start in a visible state and gradually erase the path. `draw` only works with elements that have a `getTotalLength` method, like `<path>` and `<polyline>`.
 | |
| 
 | |
| `draw` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `speed` (`number`, default undefined) - the speed of the animation, see below.
 | |
| - `duration` (`number` | `function`, default 800) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `cubicInOut`) — an [easing function](/docs/svelte-easing)
 | |
| 
 | |
| The `speed` parameter is a means of setting the duration of the transition relative to the path's length. It is a modifier that is applied to the length of the path: `duration = length / speed`. A path that is 1000 pixels with a speed of 1 will have a duration of `1000ms`, setting the speed to `0.5` will double that duration and setting it to `2` will halve it.
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { draw } from 'svelte/transition';
 | |
| 	import { quintOut } from 'svelte/easing';
 | |
| </script>
 | |
| 
 | |
| <svg viewBox="0 0 5 5" xmlns="http://www.w3.org/2000/svg">
 | |
| 	{#if condition}
 | |
| 		<path
 | |
| 			transition:draw={{ duration: 5000, delay: 500, easing: quintOut }}
 | |
| 			d="M2 1 h1 v1 h1 v1 h-1 v1 h-1 v-1 h-1 v-1 h1 z"
 | |
| 			fill="none"
 | |
| 			stroke="cornflowerblue"
 | |
| 			stroke-width="0.1px"
 | |
| 			stroke-linejoin="round"
 | |
| 		/>
 | |
| 	{/if}
 | |
| </svg>
 | |
| ```
 | |
| 
 | |
| ## `crossfade`
 | |
| 
 | |
| > EXPORT_SNIPPET: svelte/transition#crossfade
 | |
| 
 | |
| The `crossfade` function creates a pair of [transitions](/docs/element-directives#transition-fn) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.
 | |
| 
 | |
| `crossfade` accepts the following parameters:
 | |
| 
 | |
| - `delay` (`number`, default 0) — milliseconds before starting
 | |
| - `duration` (`number` | `function`, default 800) — milliseconds the transition lasts
 | |
| - `easing` (`function`, default `cubicOut`) — an [easing function](/docs/svelte-easing)
 | |
| - `fallback` (`function`) — A fallback [transition](/docs/element-directives#transition-fn) to use for send when there is no matching element being received, and for receive when there is no element being sent.
 | |
| 
 | |
| ```svelte
 | |
| <script>
 | |
| 	import { crossfade } from 'svelte/transition';
 | |
| 	import { quintOut } from 'svelte/easing';
 | |
| 
 | |
| 	const [send, receive] = crossfade({
 | |
| 		duration: 1500,
 | |
| 		easing: quintOut
 | |
| 	});
 | |
| </script>
 | |
| 
 | |
| {#if condition}
 | |
| 	<h1 in:send={{ key }} out:receive={{ key }}>BIG ELEM</h1>
 | |
| {:else}
 | |
| 	<small in:send={{ key }} out:receive={{ key }}>small elem</small>
 | |
| {/if}
 | |
| ```
 | |
| 
 | |
| ## Types
 | |
| 
 | |
| > TYPES: svelte/transition
 |