svelte/transition
svelte/transition
模块暴露了 6 个方法,分别是:fade
,fly
,slide
,scale
,draw
和 crossfade
。它们是用于 svelte transitions
。
fade
transition:fade={params}
in:fade={params}
out:fade={params}
<script>
import { fade } from 'svelte/transition';
</script>
{#if condition}
<div transition:fade="{{delay: 250, duration: 300}}">
fades in and out
</div>
{/if}
in
过渡动画是透明度从 0 过渡到当前指定的透明度,out
过渡动画是透明度从当前指定的透明度过渡到 0。
fade
可以传入以下几个参数:
dealy
(number
,默认为 0)——动画开始之前的延迟毫秒数。duration
(number
,默认为 400)——过渡动画持续的毫秒数。 你可以在 transition tutorial 中看到fade
过渡动画是如何被使用的。
fly
transition:fly={params}
in:fly={params}
out:fly={params}
设定元素在 x 轴、y 轴以及透明度上的动画。in
过渡动画将会从元素当前(默认)的状态过渡到用户提供的从参数传入的状态。out
过渡动画将会从用户提供的状态过渡到默认的状态。
<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}
fly
可以传入以下几个参数:
dealy
(number
,默认为 0)——动画开始之前的延迟毫秒数。duration
(number
,默认为 400)——过渡动画持续的毫秒数。easing
(function
,默认为cubicOut
)——一个 easing functionx
(number
,默认为 0)—— x 轴上的偏移量,即渐入时的开始量,渐出时的结束量。y
(number
,默认为 0)—— y 轴上的偏移量,即渐入时的开始量,渐出时的结束量。opacity
(number,默认为 0)—— 动画时的透明度值,即渐入时的开始量,渐出时的结束量。 你可以在 [transition tutorial](https://svelte.dev/tutorial/transition) 中看到
fade` 过渡动画是如何被使用的。
slide
transition:slide={params}
in:slide={params}
out:slide={params}
渐入或渐出时滑动元素。
<script>
import { slide } from 'svelte/transition';
import { quintOut } from 'svelte/easing';
</script>
{#if condition}
<div transition:slide="{{delay: 250, duration: 300, easing: quintOut }}">
slides in and out
</div>
{/if}
slide
可以传入以下几个参数:
dealy
(number
,默认为 0)——动画开始之前的延迟毫秒数。duration
(number
,默认为 400)——过渡动画持续的毫秒数。easing
(function
,默认为cubicOut
)——一个 easing function
scale
transition:scale={params}
in:scale={params}
out:scale={params}
<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}
scale
可以传入以下几个参数:
dealy
(number
,默认为 0)——动画开始之前的延迟毫秒数。duration
(number
,默认为 400)——过渡动画持续的毫秒数。easing
(function
,默认为cubicOut
)——一个 easing functionstart
(number
,默认为 0)——动画时的缩放值,即渐入时的开始量,渐出时的结束量。opacity
(`number,默认为 0)—— 动画时的透明度值,即渐入时的开始量,渐出时的结束量。
draw
transition:draw={params}
in:draw={params}
out:draw={params}
<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>
SVG 元素笔画的动画,就像管道中的蛇一样。在过渡动画的开始路径并不可见,随着时间的推移逐渐绘制这个路径。out
过渡动画时从路径可见的状态开始,逐渐隐藏路径。draw
仅适用于具有 getTotalLength
方法的元素,如 <path>
和<polyline>
scale
可以传入以下几个参数:
dealy
(number
,默认为 0)——动画开始之前的延迟毫秒数。speed
(number
,默认为 undefined)——动画的速度,详见下面的说明。duration
(number
,默认为 800)——过渡动画持续的毫秒数。easing
(function
,默认为cubicOut
)——一个 easing function
speed
参数是用来设置与路径长度相关的转换动画持续时间的一种方法。它是一个用在路径长度上的修饰符:duration = length / speed
。一个长度为 1000 像素的路径,速度为 1 时,它的持续时间是 1000ms
,当速度设置为 0.5
时会让持续时间折半,当设置为 2
时持续时间会翻倍。