苗条的过渡似乎结束得太早了
Svelte transition seems to finish too soon
我正在尝试在 Svelte 中构建一个简单的过渡,其中我的卡片在页面加载时进行动画处理。我已经按照 让它正确启动 onMount
,所以没问题。但是,过渡本身似乎“跳”到结尾的速度太快了,并跳过了最后几帧。
GIF of problem running on localhost.
奇怪的是,当我将相同的代码复制并粘贴到 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>
自己找到答案了!不确定为什么会修复它,但对我来说,将 transition
更改为 in
似乎已经解决了视觉错误。
我正在尝试在 Svelte 中构建一个简单的过渡,其中我的卡片在页面加载时进行动画处理。我已经按照 onMount
,所以没问题。但是,过渡本身似乎“跳”到结尾的速度太快了,并跳过了最后几帧。
GIF of problem running on localhost.
奇怪的是,当我将相同的代码复制并粘贴到 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>
自己找到答案了!不确定为什么会修复它,但对我来说,将 transition
更改为 in
似乎已经解决了视觉错误。