当前位置:首页 > VUE

vue实现抖动

2026-03-07 06:28:26VUE

Vue 实现抖动效果

在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动态控制样式。以下是几种常见的方法:

使用 CSS 动画

通过定义 @keyframes 实现抖动动画,再应用到 Vue 组件上。

.shake {
  animation: shake 0.5s;
}

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

在 Vue 模板中动态绑定类名:

<template>
  <div :class="{ shake: isShaking }" @click="triggerShake">点击抖动</div>
</template>

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

使用 Vue Transition

结合 Vue 的 <transition> 组件和 CSS 动画实现。

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

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

使用 JavaScript 动态样式

通过 Vue 的响应式数据动态修改样式属性。

<template>
  <div 
    :style="shakeStyle" 
    @click="startShake"
  >动态抖动</div>
</template>

<script>
export default {
  data() {
    return {
      shakeStyle: {},
      shakeCount: 0
    }
  },
  methods: {
    startShake() {
      this.shakeCount = 0
      this.doShake()
    },
    doShake() {
      if (this.shakeCount >= 10) {
        this.shakeStyle = { transform: 'translateX(0)' }
        return
      }
      const direction = this.shakeCount % 2 === 0 ? -5 : 5
      this.shakeStyle = { transform: `translateX(${direction}px)` }
      this.shakeCount++
      setTimeout(this.doShake, 50)
    }
  }
}
</script>

使用第三方库

可以集成如 animate.cssvue-kinesis 等库简化实现。

安装 animate.css

npm install animate.css

在 Vue 中使用:

vue实现抖动

<template>
  <div class="animated shake" v-if="isShaking">抖动效果</div>
</template>

<script>
import 'animate.css'
export default {
  data() {
    return {
      isShaking: false
    }
  }
}
</script>

注意事项

  • 抖动幅度和持续时间可通过调整 CSS 的 translateX 值和 animation-duration 自定义。
  • 频繁触发动画时建议清除旧动画,避免性能问题。
  • 移动端需考虑硬件加速,可添加 will-change: transform 优化性能。

标签: vue
分享给朋友:

相关文章

vue实现管道

vue实现管道

Vue 中实现管道(Pipe)功能 在 Vue 中可以通过过滤器(Filters)或计算属性(Computed Properties)实现类似管道的功能,将数据经过多个处理步骤后输出。 使用过滤器(…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…