Motion (動態效果)
Tweens
Svelte 提供了 tweened 這個函式,可以簡單的建立一個由 A 轉變至 B 的平滑動畫。
以下方的 progress bar 為例,使用點擊按鈕來改變 progress bar 的進度。可以發現進度條的變化有一個簡易的動畫效果。
<script>
import { tweened } from "svelte/motion";
const progress = tweened(0);
</script>
<progress value={$progress}></progress>
<button on:click={() => progress.set(0.5)}> 50% </button>
<button on:click={() => progress.set(1)}> 100% </button>
還可以使用 svelte/easing 來增加其他動畫效果。
<script>
import { tweened } from "svelte/motion";
import { cubicOut } from "svelte/easing";
const progress = tweened(0, {
duration: 400,
easing: cubicOut,
});
</script>
Spring
spring 功能與 tweened 類似,提供了一種 Q 彈的效果動畫,spring 更適合時常變更值的場景。
<script>
import { spring } from "svelte/motion";
let coords = spring(
{ x: 50, y: 50 },
{
stiffness: 0.1,
damping: 0.25,
},
);
let size = spring(10);
</script>