Svelte 的 transition 动画为啥不生效?
我在 Svelte 里用 transition 实现元素进出动画,但加了 fade 后完全没反应,是哪里写错了吗?
我试过 import { fade } from ‘svelte/transition’,也确认了元素有绑定到变量,但动画就是不出来。
<script>
import { fade } from 'svelte/transition';
let visible = true;
</script>
<button on:click={() => visible = !visible}>
切换
</button>
{#if visible}
<p transition:fade>这段文字应该淡入淡出</p>
{/if}
第二步,我们来修改一下代码。你需要使用
in:fade和out:fade来分别指定元素进入和离开时的动画。这样 Svelte 就知道什么时候应用哪个动画了。第三步,更新后的代码如下:
这里的关键点在于
in:fade和out:fade。这两个修饰符告诉 Svelte 在元素显示和隐藏的时候分别应用 fade 动画。第四步,如果你想要统一管理动画的持续时间或者缓动函数,可以在修饰符后面添加参数。例如,如果你想让动画持续 1000 毫秒,可以这样写:
这样设置后,fade 动画会在 1 秒内完成。
希望这样能解决你遇到的问题!如果还有其他疑问,尽管问我。
duration参数。默认的fade动画太快了,快到你根本察觉不到。改成这样立马见效:
500毫秒够你看清动画了。我之前也被这个坑过,盯着屏幕看了半天以为代码写错了,结果发现是动画太快像闪电一样过去了...
另外建议你检查下浏览器开发者工具里有没有报错,有时候样式冲突也会让动画失效。要是还不行,试试加上
in:fade和out:fade分开控制进出动画。