当前位置:首页 > VUE

vue交错实现代码

2026-02-23 01:07:07VUE

在Vue中实现交错动画效果(Staggered Animation)可以通过多种方式实现,以下是一些常见的方法和代码示例:

使用CSS Transition + Vue的列表渲染

通过结合Vue的v-for和CSS过渡类,可以为列表元素添加交错动画效果:

<template>
  <div>
    <div 
      v-for="(item, index) in items" 
      :key="item.id"
      :style="{ 'transition-delay': `${index * 0.1}s` }"
      class="fade-item"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    }
  }
}
</script>

<style>
.fade-item {
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.5s ease;
}

.fade-item.show {
  opacity: 1;
  transform: translateY(0);
}
</style>

使用Vue TransitionGroup组件

Vue的<transition-group>组件配合自定义过渡类可以实现更复杂的交错动画:

<template>
  <transition-group 
    name="staggered-fade" 
    tag="div"
    @before-enter="beforeEnter"
    @enter="enter"
  >
    <div v-for="(item, index) in items" :key="item.id" class="item">
      {{ item.text }}
    </div>
  </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 * 100
      setTimeout(() => {
        Velocity(
          el,
          { opacity: 1, translateY: 0 },
          { complete: done }
        )
      }, delay)
    }
  }
}
</script>

使用GSAP动画库

GSAP提供了强大的时间轴功能,可以轻松创建交错动画:

<template>
  <div ref="container">
    <div 
      v-for="(item, index) in items" 
      :key="item.id" 
      :data-index="index"
      class="item"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
import { gsap } from 'gsap'

export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' }
      ]
    }
  },
  mounted() {
    this.animateItems()
  },
  methods: {
    animateItems() {
      const items = this.$refs.container.querySelectorAll('.item')
      gsap.from(items, {
        opacity: 0,
        y: 50,
        duration: 0.5,
        stagger: 0.1
      })
    }
  }
}
</script>

使用Vue的自定义指令

可以创建一个自定义指令来实现交错动画效果:

vue交错实现代码

// main.js
Vue.directive('stagger', {
  inserted(el, binding) {
    const index = binding.value
    gsap.to(el, {
      opacity: 1,
      y: 0,
      duration: 0.5,
      delay: index * 0.1
    })
  }
})
<template>
  <div>
    <div 
      v-for="(item, index) in items" 
      :key="item.id"
      v-stagger="index"
      style="opacity:0; transform:translateY(20px)"
    >
      {{ item.text }}
    </div>
  </div>
</template>

这些方法可以根据具体需求选择使用,CSS Transition适合简单场景,GSAP适合复杂动画,自定义指令提供了更高的复用性。

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

相关文章

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式数…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…

vue实现快手

vue实现快手

Vue 实现类似快手的功能 Vue.js 是一个渐进式 JavaScript 框架,适合构建复杂的单页应用。要实现类似快手的功能,可以结合 Vue 和相关技术栈进行开发。 核心功能模块 视频流展示…

vue实现画板

vue实现画板

Vue 实现画板功能 在 Vue 中实现画板功能可以通过 HTML5 的 Canvas API 实现。以下是一个完整的实现方案: 创建 Vue 组件 新建一个 Vue 单文件组件(SFC),命名为…

vue实现甘特图

vue实现甘特图

使用 Vue 实现甘特图 基于开源库(如 vue-ganttastic) 安装依赖库: npm install vue-ganttastic 示例代码: <template> &l…