当前位置:首页 > 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 等库快速实现效果:

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

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

vue实现列表过渡

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

相关文章

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── K…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

vue 实现后退

vue 实现后退

实现后退功能的方法 在Vue中实现后退功能通常需要结合浏览器历史记录API或Vue Router的导航方法。以下是几种常见的实现方式: 使用Vue Router的go方法 this.$rout…

vue实现pc

vue实现pc

Vue 实现 PC 端应用开发 Vue.js 是一个流行的前端框架,适用于构建 PC 端 Web 应用。以下是关键步骤和最佳实践: 项目初始化 使用 Vue CLI 或 Vite 创建项目:…

vue 实现长按

vue 实现长按

实现长按功能的基本思路 在Vue中实现长按功能,通常需要监听元素的mousedown或touchstart事件,启动一个计时器。当用户按住元素超过设定的时间阈值时,触发长按回调函数。如果在时间阈值内触…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…