svelte/animate 模块导出了一个函数,用于 Svelte 的 animations

flip

  1. function flip(
  2. node: Element,
  3. {
  4. from,
  5. to
  6. }: {
  7. from: DOMRect;
  8. to: DOMRect;
  9. },
  10. params?: FlipParams
  11. ): AnimationConfig;
  1. animate:flip={params}

flip 函数计算元素的起始和结束位置,并在它们之间进行动画过渡,平移 xy 值。flip 代表 First, Last, Invert, Play

flip 接受以下参数:

  • delaynumber,默认为 0)— 开始之前的毫秒数
  • durationnumber | function,默认为 d => Math.sqrt(d) * 120)— 见下文
  • easingfunction,默认为 cubicOut)— 一个 easing 函数

duration 可以提供为:

  • 一个 number,以毫秒为单位。
  • 一个函数,distance: number => duration: number,接收元素将移动的像素距离,并以毫秒为单位返回持续时间。这允许你为每个元素分配一个与移动距离相对的持续时间。

你可以在 animations 教程 上看到完整示例。

  1. <script>
  2. import { flip } from 'svelte/animate';
  3. import { quintOut } from 'svelte/easing';
  4. let list = [1, 2, 3];
  5. </script>
  6. {#each list as n (n)}
  7. <div animate:flip={{ delay: 250, duration: 250, easing: quintOut }}>
  8. {n}
  9. </div>
  10. {/each}

类型

AnimationConfig

  1. interface AnimationConfig {…}
  1. delay?: number;
  1. duration?: number;
  1. easing?: (t: number) => number;
  1. css?: (t: number, u: number) => string;
  1. tick?: (t: number, u: number) => void;

FlipParams

  1. interface FlipParams {…}
  1. delay?: number;
  1. duration?: number | ((len: number) => number);
  1. easing?: (t: number) => number;