当前位置:首页 > VUE

vue实现抖动

2026-02-10 06:35:39VUE

Vue 实现元素抖动效果

在Vue中实现抖动效果可以通过CSS动画或JavaScript库完成。以下是几种常见方法:

使用CSS关键帧动画

在Vue组件的<style>部分定义抖动动画:

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
  20%, 40%, 60%, 80% { transform: translateX(5px); }
}

.shake-element {
  animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
}

在模板中绑定class:

<template>
  <div :class="{ 'shake-element': shouldShake }" @click="triggerShake">
    点击抖动
  </div>
</template>

<script>
export default {
  data() {
    return {
      shouldShake: false
    }
  },
  methods: {
    triggerShake() {
      this.shouldShake = true
      setTimeout(() => {
        this.shouldShake = false
      }, 500)
    }
  }
}
</script>

使用Vue过渡动画

结合Vue的过渡系统实现:

<template>
  <transition name="shake">
    <div v-if="show" @click="shake">抖动元素</div>
  </transition>
</template>

<style>
.shake-enter-active {
  animation: shake 0.82s;
}
@keyframes shake {
  10%, 90% { transform: translateX(-1px); }
  20%, 80% { transform: translateX(2px); }
  30%, 50%, 70% { transform: translateX(-4px); }
  40%, 60% { transform: translateX(4px); }
}
</style>

使用第三方库(如GSAP)

安装GSAP:

npm install gsap

组件实现:

<template>
  <div ref="shakeTarget" @click="shake">GSAP抖动</div>
</template>

<script>
import { gsap } from 'gsap'

export default {
  methods: {
    shake() {
      gsap.to(this.$refs.shakeTarget, {
        x: -5,
        duration: 0.05,
        repeat: 5,
        yoyo: true
      })
    }
  }
}
</script>

响应式抖动控制

通过数据驱动实现条件抖动:

vue实现抖动

<template>
  <div 
    :class="{ 'shake': hasError }"
    @animationend="hasError = false"
  >
    表单输入
  </div>
</template>

<style>
.shake {
  animation: shake 0.5s;
}
</style>

<script>
export default {
  data() {
    return {
      hasError: false
    }
  },
  watch: {
    inputValue() {
      if(!this.validate()) {
        this.hasError = true
      }
    }
  }
}
</script>

以上方法可根据实际需求选择,CSS动画适合简单场景,GSAP适合复杂动画序列,过渡系统适合与Vue生命周期结合的场景。

标签: vue
分享给朋友:

相关文章

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue遮罩实现

vue遮罩实现

实现 Vue 遮罩的常见方法 使用 CSS 定位和透明度 创建一个全屏遮罩层,通过 CSS 固定定位覆盖整个视口,并设置半透明背景色。 <template> <div cl…

vue实现border样式

vue实现border样式

实现边框样式的方法 在Vue中实现边框样式可以通过多种方式完成,包括内联样式、CSS类绑定、动态样式绑定等。以下是几种常见的方法: 内联样式绑定 通过style属性直接绑定样式对象,适用于简单的边…

vue前端实现教程

vue前端实现教程

Vue 前端实现基础教程 环境准备 安装 Node.js(建议 LTS 版本)和 npm/yarn。 通过命令行全局安装 Vue CLI: npm install -g @vue/cli 创建项…