当前位置:首页 > VUE

vue实现抖动

2026-01-12 23:19:35VUE

Vue 实现抖动效果

抖动效果通常用于吸引用户注意力或提示操作反馈。以下是几种实现方式:

CSS Animation 实现

通过定义 @keyframes 实现抖动动画,适用于简单场景:

vue实现抖动

<template>
  <div class="shake-element" @click="shake">点击抖动</div>
</template>

<style>
.shake-element {
  display: inline-block;
  padding: 10px 20px;
  background: #42b983;
  color: white;
  cursor: pointer;
}

.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>

<script>
export default {
  methods: {
    shake() {
      const el = document.querySelector('.shake-element')
      el.classList.add('shake')
      setTimeout(() => el.classList.remove('shake'), 500)
    }
  }
}
</script>

使用 Vue Transition

结合 Vue 的过渡系统实现可复用的抖动效果:

vue实现抖动

<template>
  <button @click="isShaking = !isShaking">
    <transition name="shake">
      <span v-if="show">抖动内容</span>
    </transition>
  </button>
</template>

<style>
.shake-enter-active {
  animation: shake 0.5s;
}
.shake-leave-active {
  animation: shake 0.5s reverse;
}
/* 复用相同的 @keyframes */
</style>

第三方动画库

使用 animate.css 等成熟动画库快速实现:

npm install animate.css
<template>
  <div 
    class="animated"
    :class="{ 'shakeX': isShaking }"
    @click="isShaking = true"
  >
    抖动元素
  </div>
</template>

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

GSAP 高级控制

需要精细控制动画时推荐使用 GSAP:

npm install gsap
<template>
  <div ref="shakeTarget">高级抖动</div>
  <button @click="startShake">开始</button>
</template>

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

每种方案各有优势:CSS 方案最轻量,Transition 适合 Vue 生态,动画库方便快捷,GSAP 提供最专业的控制能力。根据项目复杂度选择合适方案即可。

标签: vue
分享给朋友:

相关文章

vue实现atm

vue实现atm

Vue实现ATM机模拟功能 使用Vue.js实现ATM机模拟功能需要结合组件化开发、状态管理以及用户交互逻辑。以下是关键实现步骤: 核心组件结构 创建以下Vue组件构建ATM界面: Card…

vue实现年历

vue实现年历

Vue 实现年历的方法 使用 Vue 实现年历可以通过组件化开发方式,结合日期计算和动态渲染完成。以下是两种常见的实现方式: 基于原生 Vue 的日历组件 创建 Calendar.vue 组件文件…

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-t…

vue怎么实现页面返回

vue怎么实现页面返回

Vue 实现页面返回的方法 在 Vue 中实现页面返回功能,可以通过以下几种方式完成,具体取决于项目使用的路由模式和技术栈。 使用 Vue Router 的编程式导航 通过 this.$router…

vue实现适老化样式

vue实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { --…

vue实现查询替换

vue实现查询替换

Vue 实现查询替换功能 在 Vue 中实现查询替换功能,可以通过数据绑定和字符串操作方法结合实现。以下是具体实现方式: 基础实现 <template> <div>…