页面加载时的 Svelte 过渡和动画

Svelte transitions and animations on page load

我目前正在使用 Svelte 和 Sapper 开发一个网站。我正在使用 Svelte 过渡来为一些页面元素设置动画。每当我更改为新的页面路由时,转换都会正确设置动画。但是当我第一次加载页面时,它们没有动画。

Svelte 如何处理页面加载时的动画?我需要使用 onMount() 才能让它们正常工作吗?

来自 Svelte 文档:

By default intro transitions will not play on first render. You can modify this behaviour by setting intro: true when you create a component.

因此,如果您希望您的整个应用程序在整个应用程序中默认加载转换,您只需在 main.js 中执行以下操作:

import App from './App.svelte';

const app = new App({
    target: document.body,
    intro: true
});

编辑:

查看 Rich 对 Sapper 用法的回答。

因为 Sapper server-renders 页面,intro: true 会导致可见内容突然变得不可见然后再过渡回来。

为避免这种情况,您需要首先防止内容 server-rendered。最简单的方法确实是使用 onMount:

<script>
  import { onMount } from 'svelte';

  let ready = false;
  onMount(() => ready = true);
</script>

<div class="always-visible">
  {#if ready}
    <div class="visible-on-mount">...</div>
  {/if}
</div>