vue2.0 + Animate.css,如何使得在每次数据更新后,自动触发动画?

发布于 2022-09-06 04:30:14 字数 854 浏览 25 评论 0

例如一个引入了 Animate.cssTimeline 组件:

<Timeline>
    <TimelineItem v-for="(item, index) in data" :key="index" class='animated slideInDown'>
        <p>{{ item.content }}</p>
    </TimelineItem>
</Timeline>

如下图:
图片描述

期望效果:
每次 data 数据更新,列表中每个 item 都会执行一个 slideDown 动画,以达到一个平滑、用户体验良好的时间线更新效果。

实际效果:
只有首次加载页面是有动画,每次 data 数据更新,视图随之更新,但不会触发动画。

已有尝试:
当前尝试了 动态绑定 :classthis.$nextTick()vue 生命周期钩子改变 class,都达不到目的。

请问还有什么方法?或者有什么其他的比较好用的时间线动态更新插件

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

濫情▎り 2022-09-13 04:30:14

:key="index" 每次都一样 1 2 3 4 5
Vue会重用这个dom
所以你这里的 key 你要用一些能够严格区分的,比如 GUID

人心善变 2022-09-13 04:30:14

我碰到了和你一样的问题
要多次触发animated 就得取消掉class 在赋值class
但是在同一个function里面
先 this.userShake = false
在 this.userShake = true
是没有作用的他还是会安装最终值去渲染所以 我先试了this.$nextTick(()=>{this.userShake = true})没有效果
然后用了 setTimeout有效果 但是这样不是很理想
之后我试了 promise 代码量有点多 也可以达到预期效果

暮年 2022-09-13 04:30:14

可以在transition group外面再加一层transition,让内层的元素作为一个整体可以实现每次切换tab都以动画来过渡

<transition name="fade">
   <transition-group name="list"
                     tag="ul" 
                     :key="currentKey"
                     mode='out-in'>
       <li v-for="item in goods" v-show="Current(item.category)" :key="item.id">{{item.title}}
   </transition-group>
 </transition>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文