不,那不可能
无法以这种方式进行动画处理,因为DOM认为您要先删除a
div然后再添加new
div。即使与
div您相同,DOM也没有该上下文。动画是通过更改CSS(而不是HTML)来控制的。
…但是这是怎么做的
如果您实际上需要两个列表都保留在不同的
divs中,那么您可以执行以下操作之一:
- 使动画
old item
到该new item
位置,然后删除old item
并显示new item
。 - 删除
old item
并在原处创建一个new item
,old item
然后将其移动到该new item
位置。
相同的概念,两种实现方式。
我修改了您现有的示例,以显示选项2 的 简化
版本。请注意,要做出许多动画决定,例如列表变小时会发生什么,项目应如何从红色变为绿色等,而我没有不要试图客观地解决它们。同样,如果您可以将
item两个列表的所有s都放在一个
div中并控制它们的位置,则将容易得多
absolute。但是如果他们需要结束于单独
div的…
https://prepen.io/sallf/pen/VgBwQr?editors=0010
这是怎么回事
- 添加
transition
到.item
我们可以让动画发生时,我们作出调整transform
财产。 - 点击项目后,我们会更新状态列表并添加…
transition.item
知道哪个项目正在制作动画…transition.startTop
知道y
项目应相对于要移动的列表底部的偏移位置,并…transition.startAnim
作为控制动画的标志。- 由于
transition
s需要先进行更改才能进行动画处理,因此我们setTimeout
可以延迟更改,transition.startAnim
这基本上会导致动画从计算位置返回0
。



