当前位置:首页 > VUE

vue不点击实现动画

2026-02-21 11:31:06VUE

Vue 实现非点击触发的动画方法

使用 v-ifv-show 结合生命周期钩子

通过组件的挂载和卸载自动触发动画,适合页面加载或条件渲染场景。

<template>
  <transition name="fade">
    <div v-if="show">内容</div>
  </transition>
</template>

<script>
export default {
  data() {
    return { show: false }
  },
  mounted() {
    this.show = true // 自动触发入场动画
  }
}
</script>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

使用 Intersection Observer API

当元素进入视口时触发动画,适合滚动展示效果。

vue不点击实现动画

<template>
  <div ref="target">
    <transition name="slide">
      <div v-if="isVisible">滚动到此处时显示</div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return { isVisible: false }
  },
  mounted() {
    const observer = new IntersectionObserver((entries) => {
      this.isVisible = entries[0].isIntersecting
    })
    observer.observe(this.$refs.target)
  }
}
</script>

使用 CSS @keyframes 自动动画

通过纯 CSS 实现无需交互的循环动画。

vue不点击实现动画

<template>
  <div class="auto-rotate">旋转元素</div>
</template>

<style>
.auto-rotate {
  animation: rotate 2s linear infinite;
}
@keyframes rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
</style>

定时器控制动画

通过 setTimeoutsetInterval 实现延迟动画。

<template>
  <transition name="bounce">
    <div v-if="active">定时显示的内容</div>
  </transition>
</template>

<script>
export default {
  data() {
    return { active: false }
  },
  mounted() {
    setTimeout(() => {
      this.active = true // 3秒后触发动画
    }, 3000)
  }
}
</script>

使用 Vue 的 transition-group

列表自动渲染时应用动画效果。

<template>
  <transition-group name="list" tag="ul">
    <li v-for="item in items" :key="item.id">{{ item.text }}</li>
  </transition-group>
</template>

<script>
export default {
  data() {
    return {
      items: [] // 初始为空
    }
  },
  created() {
    // 模拟异步数据加载
    setTimeout(() => {
      this.items = [
        { id: 1, text: '项目1' },
        { id: 2, text: '项目2' }
      ]
    }, 1000)
  }
}
</script>

注意事项

  • 使用 CSS 动画时注意性能优化,优先使用 transformopacity 属性
  • 复杂动画可考虑使用 GreenSock (GSAP) 等专业动画库
  • 移动端注意硬件加速优化,可添加 will-change 属性
  • 组件销毁前清除定时器或观察器避免内存泄漏

标签: 动画vue
分享给朋友:

相关文章

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vue…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue实现curd

vue实现curd

Vue实现CRUD操作 初始化Vue项目 使用Vue CLI创建新项目,安装必要依赖如axios用于HTTP请求 vue create crud-demo cd crud-demo npm inst…