最近,我发现了很棒的动画,其中包含随机播放列表https://jsfiddle.net/chrisvfritz/sLrhk1bc/ 我对此感到惊讶。因此,我尝试通过仅使用CSS和jQuery来做到这一点。
我也尝试自己做https://jsfiddle.net/stas0/68Lpwqgk/ 但这并没有像vue shuffle那样起作用。
正如我在理解之前所读到的那样,元素必须在DOM树中移动,但是我不知道如何向其中添加动画。我猜测我需要使用转换,但不知道如何使用transform: translate
,但是在一个示例中,我没有找到翻译选项。
所以我的目标是像在Vue中那样仅使用CSS和jQuery创建简单的洗牌(在我的链接示例中,只有两项)。
谢谢。
答案 0 :(得分:1)
在初始示例中,您看不到任何translate
(或matrix
)转换的原因是,这些转换是在<transition-group>
指令中执行的。
没有此指令,更改将立即生效。这些元素将跳到其新位置。
<transition-group>
的作用是:
为了允许控制动画,<transition-group>
将transition classes应用于每个过渡元素。
在原始示例中,
.cell-move {
transition: transform 1s;
}
控制动画,因为:
name
中的transform-group
是cell
。move
(转换后的孩子会移动其在父级中的位置)。为更好地可视化正在发生的事情,watch their indexes。
因此,为了复制相同的效果,您需要:
getBoundingClientRect
),并使用它们将原始元素转换为克隆位置。 重要提示::您不必在DOM中实际插入克隆即可计算新位置,但这会使事情变得容易,尤其是如果您不了解后面发生的一切时场景。
重要的部分是克隆不会触发文档的“布局”和“绘画”层中的重绘。它在整个生命周期中基本上都必须有position:absolute
。
即使您的问题具有不同的风格(即:“ Vue的功能如何?” ),但从技术上讲,您的问题已被问过并回答过。例如,使用clone
和/或transition
快速搜索我的答案可能会弹出类似的答案。这是a similar one。