当前位置:首页 > VUE

vue实现抖动

2026-03-27 16:04:44VUE

Vue 实现抖动效果的方法

抖动效果可以通过 CSS 动画或 JavaScript 实现。以下是几种常见的实现方式:

使用 CSS 动画

在 Vue 组件的样式部分定义抖动动画:

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

@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="shake">
    点击抖动
  </div>
</template>

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

使用第三方库

安装 animate.css 库:

npm install animate.css

在 Vue 中使用:

vue实现抖动

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

<script>
import 'animate.css'
export default {
  data() {
    return {
      isShaking: false
    }
  },
  methods: {
    shake() {
      this.isShaking = true
      setTimeout(() => {
        this.isShaking = false
      }, 1000)
    }
  }
}
</script>

使用 JavaScript 实现

通过直接操作 DOM 元素的样式实现抖动:

<template>
  <div ref="shakeElement" @click="shake">
    点击抖动
  </div>
</template>

<script>
export default {
  methods: {
    shake() {
      const element = this.$refs.shakeElement
      let distance = 5
      let times = 10
      let interval = 50

      const shakeInterval = setInterval(() => {
        if (times-- <= 0) {
          clearInterval(shakeInterval)
          element.style.transform = 'translateX(0)'
          return
        }

        const direction = times % 2 === 0 ? -1 : 1
        element.style.transform = `translateX(${distance * direction}px)`
        distance *= 0.9
      }, interval)
    }
  }
}
</script>

注意事项

  1. CSS 动画性能通常优于 JavaScript 实现
  2. 考虑添加 will-change: transform 提升动画性能
  3. 抖动时间不宜过长,通常 0.5-1 秒足够
  4. 移动端可能需要调整抖动幅度

以上方法可以根据具体需求选择使用,CSS 动画实现最简单,第三方库提供更多预设动画,JavaScript 实现则提供最大灵活性。

标签: vue
分享给朋友:

相关文章

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue实现分站

vue实现分站

Vue 实现分站的方案 在 Vue 中实现分站功能通常涉及路由配置、环境变量管理和动态加载资源。以下是几种常见的实现方式: 基于路由的分站实现 通过 Vue Router 配置多路由,区分不同站点的…

vue app 实现

vue app 实现

Vue App 实现步骤 创建Vue项目 使用Vue CLI或Vite初始化项目。Vue CLI适合传统项目,Vite适合现代轻量级应用。 npm create vue@latest my-vu…

vue实现联动

vue实现联动

Vue 实现联动效果 联动效果通常指多个组件或表单元素之间相互影响,例如选择省份后动态加载城市列表。Vue 提供了多种方式实现联动,包括数据绑定、计算属性、侦听器等。 数据驱动联动 通过 Vue 的…

vue实现页面

vue实现页面

Vue 实现页面的基本方法 创建 Vue 项目 使用 Vue CLI 快速初始化项目,运行以下命令安装并创建项目: npm install -g @vue/cli vue create my-pro…

vue如何实现登录

vue如何实现登录

实现登录功能的基本步骤 使用Vue实现登录功能通常需要结合后端API、状态管理以及路由控制。以下是常见的实现方式: 创建登录表单组件 在Vue组件中构建包含用户名和密码输入框的表单: <te…