【发布时间】:2021-12-18 06:44:22
【问题描述】:
我正在尝试为这个小部件列表制作动画。当然我不能只 animate:flip 一个组件,Svelte 需要一个 DOM 元素。
<!-- invalid -->
{#each widgets as widget (widget.id)}
<Widget {...widget} animate:flip/>
{/each}
我通常会用一个简单的容器 div 来解决它:
<!-- does not apply to my situation -->
{#each widgets as widget (widget.id)}
<div animate:flip>
<Widget {...widget} />
</div>
{/each}
但是,由于我在 #each 周围使用 CSS 网格,因此我需要 Widget 作为直接子级。我不能把它包在任何东西里。我该如何解决这个问题?有没有办法将animate:flip 传递给 Widget 组件并在那里处理它?
这里是a REPL of what I'm trying to achieve。当每一行(包含三个单元格)都是一个组件时,我无法获得相同的行为。
【问题讨论】:
-
Widget里面的html结构怎么样?也许你可以做一个小的REPL?
-
这是一个example,其网格包含一个组件。在您的情况下,不可能使用带有动画的包装器 div 有什么不同?
-
@Corrl 感谢您对此进行调查!我已经根据我的情况调整了您的示例:svelte.dev/repl/4707e7f2469e42ac80771d1314b51e49?version=3.44.1。在这里,包装组件会破坏 CSS 网格。
-
由于您基本上是在尝试为行设置动画,因此您必须将网格拆分为两个组件:1 列和 n 行的外部网格,并且对于每个行,应用相同的 p 列内部网格。像这样:svelte.dev/repl/d0a93034de2c4c27b3f1beb313427c1a?version=3.44.1
-
谢谢安娜,明白你的意思了!我去看看……
标签: svelte svelte-3 svelte-component svelte-transition