当前位置:首页 > VUE

vue交错实现代码

2026-01-22 10:06:51VUE

Vue 交错动画实现方法

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

<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 方案可以通过自定义属性实现延迟控制:

.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
分享给朋友:

相关文章

vue表单实现搜索

vue表单实现搜索

实现Vue表单搜索功能 在Vue中实现表单搜索功能通常涉及表单绑定、事件处理和搜索逻辑。以下是具体实现方法: 数据绑定与表单结构 使用v-model实现表单与Vue数据的双向绑定: <tem…

课程表vue实现

课程表vue实现

实现课程表的Vue组件 创建课程表需要设计数据结构、布局和交互逻辑。以下是一个基于Vue 3的实现方案: 数据结构设计 const timetableData = ref([ {…

vue实现本地数据存储

vue实现本地数据存储

使用 localStorage 或 sessionStorage Vue 中可以直接调用浏览器提供的 localStorage 或 sessionStorage API 进行数据存储。localSto…

vue实现生成二维码

vue实现生成二维码

使用qrcode.vue库生成二维码 安装qrcode.vue库: npm install qrcode.vue --save 在Vue组件中使用: <template> &l…

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…

vue实现递归

vue实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论列表、文件目录等)。以下是具体实现方法: 定义递归组件 通过 name 选项让组件可以递归调用自身:…