首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__layout中的Svelte相变

__layout中的Svelte相变
EN

Stack Overflow用户
提问于 2021-07-01 07:17:37
回答 1查看 981关注 0票数 1

如何使用__layout中的转换来加载带有动画的页面?

__layout.svelte

代码语言:javascript
复制
<script>
  import Header from '$lib/Header/index.svelte'
  import Footer from '$lib/Footer/index.svelte'
  import '../../app.css'
  import Animate from '$lib/Animate.svelte'
</script>

<Header />
<div class="bg-gray-100">
  <div class="container mx-auto px-4 sm:px-6 lg:px-8">
    <Animate>
      <slot />
    </Animate>
  </div>
</div>
<Footer />

Animate.svelte

代码语言:javascript
复制
<script>
  import { fade, fly } from 'svelte/transition'
</script>

<div in:fly={{ y: 200, duration: 2000 }} out:fade>
  <slot />
</div>

在本例中,转换效果只工作一次并显示动画。但是我想在每一次页面改变的时候都表现出转变!有没有改进这个应用程序的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-01 11:16:05

为此,您需要结合一些变量使用{#key}块,以便在需要时对其进行更新。为此,您可以使用来自$app/stores$app/stores

__layout.svelte:

代码语言:javascript
复制
<script>
  import Header from '$lib/Header/index.svelte'
  import Footer from '$lib/Footer/index.svelte'
  import '../../app.css'
  import Animate from '$lib/Animate.svelte'
  import { page } from '$app/stores' // <-- new
</script>

<Header />
<div class="bg-gray-100">
  <div class="container mx-auto px-4 sm:px-6 lg:px-8">
    <!-- The key's content is destroyed and recreated everytime the $page
         variable changes -->
    {#key $page}
      <Animate>
        <slot />
      </Animate>
    {/key}
  </div>
</div>
<Footer />

$app/stores文档:https://kit.svelte.dev/docs#modules-$app-stores

{#key}文档:https://svelte.dev/docs#key

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68205866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档