当前位置:首页 > VUE

vue交错实现代码

2026-01-22 10:06:51VUE

Vue 交错动画实现方法

使用 Vue 的 <transition-group> 组件结合 CSS 过渡可以实现交错动画效果。以下是一个典型实现方式:

vue交错实现代码

<template>
  <transition-group 
    name="staggered-fade" 
    tag="ul"
    @before-enter="beforeEnter"
    @enter="enter"
    @leave="leave"
  >
    <li v-for="(item, index) in items" :key="item.id" :data-index="index">
      {{ item.text }}
    </li>
  </transition-group>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    }
  },
  methods: {
    beforeEnter(el) {
      el.style.opacity = 0
      el.style.transform = 'translateY(20px)'
    },
    enter(el, done) {
      const delay = el.dataset.index * 150
      setTimeout(() => {
        Velocity(
          el,
          { opacity: 1, translateY: 0 },
          { complete: done }
        )
      }, delay)
    },
    leave(el, done) {
      const delay = el.dataset.index * 150
      setTimeout(() => {
        Velocity(
          el,
          { opacity: 0, translateY: '20px' },
          { complete: done }
        )
      }, delay)
    }
  }
}
</script>

使用 CSS 实现交错动画

纯 CSS 方案可以通过自定义属性实现延迟控制:

vue交错实现代码

.staggered-fade-move {
  transition: transform 0.5s;
}

.staggered-fade-enter-active,
.staggered-fade-leave-active {
  transition: all 0.5s;
}

.staggered-fade-enter,
.staggered-fade-leave-to {
  opacity: 0;
  transform: translateY(20px);
}

.staggered-fade-enter-active {
  transition-delay: calc(var(--stagger-index) * 0.1s);
}

基于 GSAP 的高级实现

对于复杂动画场景,可以使用 GSAP 时间线:

import { gsap } from 'gsap'

methods: {
  animateItems() {
    const items = this.$el.querySelectorAll('li')
    gsap.from(items, {
      duration: 0.5,
      opacity: 0,
      y: 20,
      stagger: 0.1,
      ease: 'power2.out'
    })
  }
}

动态调整延迟时间

通过计算属性动态控制延迟时间:

computed: {
  animatedItems() {
    return this.items.map((item, index) => ({
      ...item,
      style: {
        '--delay': `${index * 0.1}s`
      }
    }))
  }
}

以上方法均可实现 Vue 中的交错动画效果,开发者可根据项目需求选择合适方案。CSS 方案适合简单场景,GSAP 适合复杂动画,而 Velocity.js 提供了良好的性能平衡。

标签: 代码vue
分享给朋友:

相关文章

vue实现toast

vue实现toast

Vue 实现 Toast 的方法 使用第三方库(推荐) 对于快速实现 Toast 功能,推荐使用成熟的第三方库如 vue-toastification 或 vant 的 Toast 组件。 安装 v…

实现vue datepicker

实现vue datepicker

安装依赖 使用 vue-datepicker 或第三方库如 v-calendar 或 vue2-datepicker。以 vue2-datepicker 为例: npm install vue2…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…

vue实现uuid

vue实现uuid

使用 uuid 库生成 UUID 在 Vue 项目中,可以使用 uuid 库来生成 UUID。安装依赖: npm install uuid 在 Vue 组件中使用: import { v4 as…

vue实现插件

vue实现插件

Vue 插件实现方法 Vue 插件通常用于为 Vue 应用添加全局功能或共享功能。以下是实现 Vue 插件的核心步骤: 插件基本结构 Vue 插件需要暴露一个 install 方法,该方法接收 Vu…

vue实现下拉实现

vue实现下拉实现

Vue 实现下拉菜单的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和 v-show 指令可以快速实现下拉菜单。定义一个布尔值控制下拉菜单的显示与隐藏,点击按钮切换状态…