1

我正在尝试在 Svelte 中构建一个简单的过渡,其中我有在页面加载时动画的卡片。我已经按照这个答案让它正确触发onMount,所以没关系。但是,过渡本身似乎太快“跳”到结尾,并跳过了最后几帧。

在 localhost 上运行的问题的 GIF

奇怪的是,当我将相同的代码复制并粘贴到REPL中时,视觉错误似乎已修复。我什至下载了 REPL 并在本地运行,但仍然出现错误。

这是代码。

<script>
    import { fly } from 'svelte/transition';
    import { onMount } from 'svelte';
    const contents = [
        {
            id: 1,
        },
        {
            id: 2,
        },
        {
            id: 3,
        },
    ];

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

<main>
    <div class="topBar" />
    <div class="container">
        {#if ready}
            {#each contents as content, i}
                <div
                    class="transCard"
                    transition:fly={{ y: 80, duration: 1000, delay: i * 200 }}
                />
            {/each}
        {/if}
    </div>
</main>

<style>
    main {
        background: white;
        width: 100vw;
        height: 100vh;
        overflow-y: auto;
        overflow-x: hidden;
    }

    .container {
        display: flex;
        flex-direction: column;
        gap: 16px;
        padding: 16px;
        overflow: hidden;
        margin-top: 80px;
    }

    .topBar {
        width: 100vw;
        height: 80px;
        background: black;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 9;
    }

    .transCard {
        width: 100%;
        height: 200px;
        background: gray;
    }
</style>
4

1 回答 1

0

自己找到了答案!不知道为什么要修复它,但对我来说,更改transitionin似乎已经治愈了视觉错误。

于 2022-01-31T15:49:31.657 回答