当前位置:首页 > VUE

vue实现列表过渡

2026-02-18 02:07:25VUE

使用 <transition-group> 实现列表过渡

Vue 提供了 <transition-group> 组件专门用于列表过渡效果,支持元素动态添加、删除或顺序变化时的动画。以下是一个基础实现示例:

<template>
  <div>
    <button @click="addItem">添加项目</button>
    <button @click="removeItem">删除项目</button>
    <transition-group name="list" tag="ul">
      <li v-for="item in items" :key="item.id">{{ item.text }}</li>
    </transition-group>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: '项目1' },
        { id: 2, text: '项目2' }
      ],
      nextId: 3
    }
  },
  methods: {
    addItem() {
      this.items.push({ id: this.nextId++, text: `项目${this.nextId}` })
    },
    removeItem() {
      this.items.pop()
    }
  }
}
</script>

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

关键点说明

  • tag="ul" 指定渲染为 <ul> 元素,默认渲染为 <span>
  • 每个列表项必须设置唯一的 :key
  • name="list" 会生成对应的 CSS 类名前缀(如 list-enter-active
  • 使用 v-move 类处理列表位置变化的动画(需配合 position: absolute

进阶动画配置

可以通过 JavaScript 钩子实现更复杂的动画逻辑:

<transition-group
  @before-enter="beforeEnter"
  @enter="enter"
  @leave="leave"
>
  <!-- 列表项 -->
</transition-group>

methods: {
  beforeEnter(el) {
    el.style.opacity = 0
  },
  enter(el, done) {
    anime({
      targets: el,
      opacity: 1,
      translateY: 0,
      duration: 500,
      complete: done
    })
  }
}

排序动画优化

添加以下 CSS 可优化排序时的动画效果:

.list-move {
  transition: transform 0.5s;
}

第三方动画库集成

配合 animate.css 等库快速实现效果:

vue实现列表过渡

<transition-group
  enter-active-class="animate__animated animate__fadeInDown"
  leave-active-class="animate__animated animate__fadeOutUp"
>
  <!-- 列表项 -->
</transition-group>

注意:使用第三方动画库时需要先引入对应的 CSS 文件。

标签: 列表vue
分享给朋友:

相关文章

vue的艾特功能实现

vue的艾特功能实现

Vue 的 @ 功能实现 在 Vue 中实现类似社交平台的 @ 功能,通常涉及输入框的监听、用户匹配和选择插入。以下是具体实现方法: 监听输入框内容 使用 v-model 绑定输入框内容,并通过 @…

vue实现 toast

vue实现 toast

Vue 实现 Toast 组件 在 Vue 中实现 Toast 组件可以通过多种方式完成,以下是几种常见的方法: 使用全局组件和事件总线 创建一个全局的 Toast 组件,并通过事件总线或 Vue…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue实现gps

vue实现gps

Vue 中实现 GPS 定位功能 在 Vue 中实现 GPS 定位功能通常依赖于浏览器的 Geolocation API 或第三方地图服务(如高德、百度地图等)。以下是两种常见的实现方式: 使用浏览…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…