当前位置:首页 > VUE

vue实现抖动

2026-01-07 21:09:03VUE

Vue 实现抖动效果

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

使用 CSS 动画

通过定义 @keyframes 动画并在 Vue 组件中应用:

vue实现抖动

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

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

<style>
.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); }
}
</style>

使用 Vue Transition

Vue 的 <transition> 组件可以配合 CSS 实现抖动:

<template>
  <button @click="show = !show">
    点击触发
  </button>
  <transition name="shake">
    <div v-if="show" class="box">抖动内容</div>
  </transition>
</template>

<script>
export default {
  data() {
    return {
      show: false
    }
  }
}
</script>

<style>
.shake-enter-active {
  animation: shake 0.5s;
}
.shake-leave-active {
  animation: shake 0.5s reverse;
}
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
  20%, 40%, 60%, 80% { transform: translateX(5px); }
}
</style>

使用第三方动画库

安装 animate.css 库:

vue实现抖动

npm install animate.css

在 Vue 中使用:

<template>
  <div class="animated" :class="{ 'shakeX': shouldShake }">
    抖动元素
  </div>
  <button @click="triggerShake">触发抖动</button>
</template>

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

使用 JavaScript 实现

通过直接操作 DOM 元素的样式:

<template>
  <div ref="shakeElement" class="box">
    抖动内容
  </div>
  <button @click="shake">抖动</button>
</template>

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

      for (let i = 0; i < times; i++) {
        setTimeout(() => {
          element.style.transform = `translateX(${distance}px)`
          distance = -distance
        }, i * speed)
      }
      setTimeout(() => {
        element.style.transform = 'translateX(0)'
      }, times * speed)
    }
  }
}
</script>

这些方法都可以在 Vue 中实现抖动效果,选择适合项目需求的方式即可。CSS 动画性能较好,适合简单效果;JavaScript 实现更灵活;第三方库则提供了更多预设动画。

标签: vue
分享给朋友:

相关文章

vue实现选择分类

vue实现选择分类

Vue 实现选择分类的方法 使用 v-model 绑定选择值 在 Vue 中可以通过 v-model 指令实现双向数据绑定,适用于下拉选择框(<select>)。以下是一个基本示例:…

vue实现按钮刷新

vue实现按钮刷新

Vue 实现按钮刷新功能 在 Vue 中实现按钮刷新功能可以通过多种方式实现,具体取决于刷新需求是局部刷新还是全局刷新。以下是几种常见的方法: 使用 window.location.reload(…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [...t…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直…

vue实现导航切换内容

vue实现导航切换内容

Vue实现导航切换内容的方法 在Vue中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容切…