<div id="app">
  <button @click="add">添加</button>
  <button @click="remove">删除</button>
  <ul>
    <li v-for="(item, index) in list" :key="item.id" v-bind:class="{ 'fade-enter': item.enter, 'fade-leave': item.leave }">{{ item.text }}</li>
  </ul>
</div>
<script>
new Vue({
  el: '#app',
  data: {
    list: [
      { id: 1, text: '第一行', enter: false, leave: false },
      { id: 2, text: '第二行', enter: false, leave: false },
      { id: 3, text: '第三行', enter: false, leave: false }
    ],
    id: 4
  },
  methods: {
    add: function() {
      this.list.push({ id: this.id++, text: '新行', enter: true, leave: false });
      setTimeout(() => {
        this.list[this.list.length - 1].enter = false;
      }, 0);
    },
    remove: function() {
      this.list[this.list.length - 1].leave = true;
      setTimeout(() => {
        this.list.pop();
      }, 500);
    }
  }
});

</script>
Vue.js 列表项淡入淡出动画示例

原文地址: https://www.cveoy.top/t/topic/ohX3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录