在 Vue 3.0 中,你可以使用 <transition-group> 元素来实现列表的过渡效果。<transition-group> 元素是专门用于处理多个元素的过渡的容器。

以下是一个简单的例子,演示了如何使用列表过渡:
<template>
  <div>
    <button @click="addItem">添加项</button>
    <transition-group name="list" tag="ul">
      <li v-for="item in list" :key="item.id" @click="removeItem(item)">
        {{ item.text }}
      </li>
    </transition-group>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    };
  },
  methods: {
    addItem() {
      const newItem = {
        id: this.list.length + 1,
        text: `Item ${this.list.length + 1}`
      };
      this.list.push(newItem);
    },
    removeItem(item) {
      const index = this.list.indexOf(item);
      if (index !== -1) {
        this.list.splice(index, 1);
      }
    }
  }
};
</script>

<style>
.list-enter-active, .list-leave-active {
  transition: transform 0.5s;
}
.list-enter, .list-leave-to {
  transform: translateY(30px);
  opacity: 0;
}
</style>

在这个例子中,<transition-group> 元素包裹了一个 <ul> 元素,并使用 v-for 渲染了一组 <li> 元素。当数组 list 变化时,Vue 会根据动画的不同阶段(enter-active、enter、leave-active、leave-to)调用相应的方法。

  •  list-enter-active, list-leave-active: 定义过渡动画的时间和曲线。

  •  list-enter, list-leave-to: 定义进入和离开过渡的具体动画效果。


通过在列表容器上使用 <transition-group>,你可以在列表项添加或删除时实现平滑的过渡效果。根据具体的业务需求,你可以调整过渡效果的时间、曲线和具体动画效果。


转载请注明出处:http://www.zyzy.cn/article/detail/504/Vue 3.0