当前位置:首页 > 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

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

<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 实现无需交互的循环动画。

<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

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

vue不点击实现动画

<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实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 DO…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind(或简写为 :)动态绑定图片的…

vue实现tip

vue实现tip

Vue实现Tooltip的方法 使用Vue实现Tooltip可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML的title属性 在Vue模板中直接使用HTML的title属性是最简单的实…