vuejs 为网格内的列表项设置动画

Posted

技术标签:

【中文标题】vuejs 为网格内的列表项设置动画【英文标题】:vuejs animate list items inside grid 【发布时间】:2017-09-18 02:49:20 【问题描述】:

我在网格内生成了列表项,使用 vuejs 我通过更改类名来动态更新网格内单元格的内容。我想使用 css3 动画更改单元格内的元素。使用过渡组我已经应用了 css 动画,但它不能正常工作,因为应用了 css 类,它会创建新元素,该元素会下降到下一行,然后它会隐藏前一个元素。如何在单元格内的适当位置设置动画?

这里是 jsfiddle:https://jsfiddle.net/49gptnad/274/

<div id="vue-instance">
  <transition-group tag="div" name="fade" class="uk-grid">
    <div class="uk-width-1-2" v-for="item in thumbs" :key="item.id">
      <div class="item">
        <i class="fa" :class="item.icon" aria-hidden="true"></i>
        <h3>item.name</h3>
      </div>      
    </div>
  </transition-group>
</div>

【问题讨论】:

【参考方案1】:

你可以试试这样的:

.item 
    text-align: center;
    font-size: 20px;
    transition: opacity .5s;
    animation: fade .5s;


@keyframes fade 
    from opacity: 0;
    to opacity: 1;

https://jsfiddle.net/49gptnad/1338/

我从 html 中删除了过渡并添加了简单的关键帧动画。

【讨论】:

【参考方案2】:

最简单的解决方法是隐藏上一个图标:

.fade-enter-active 
  display: none;

Here is updated fiddle

【讨论】:

还有一些轻弹效果!

以上是关于vuejs 为网格内的列表项设置动画的主要内容,如果未能解决你的问题,请参考以下文章

Android 同时为所有列表视图项设置动画

如何在 Vue 中删除列表项时为列表项设置动画

一起为多个列表项设置动画(展开/折叠)

列表视图项之间的 Flutter Hero 类似动画

使用 tkinter 的网格内的可滚动列表框

如何为跨度计数为 2 的 recyclerview 网格布局管理器的对角线列表项着色