当前位置:首页 > VUE

用vue实现弹窗抖动

2026-02-20 17:44:05VUE

使用 Vue 实现弹窗抖动效果

弹窗抖动是一种常见的交互效果,通常用于提示用户操作或吸引注意力。以下是两种实现方法,分别基于 CSS 动画和 JavaScript 动画库。

方法一:使用 CSS 动画

通过 Vue 绑定动态类名,结合 CSS @keyframes 实现抖动效果。

模板部分

<template>
  <div class="modal" :class="{ 'shake': isShaking }" @click="shakeModal">
    <div class="modal-content">
      <p>点击弹窗触发抖动</p>
    </div>
  </div>
</template>

脚本部分

<script>
export default {
  data() {
    return {
      isShaking: false
    };
  },
  methods: {
    shakeModal() {
      this.isShaking = true;
      setTimeout(() => {
        this.isShaking = false;
      }, 500); // 动画持续时间
    }
  }
};
</script>

样式部分

<style>
.modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 20px;
  background: white;
  border: 1px solid #ccc;
  border-radius: 8px;
}

.shake {
  animation: shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}

@keyframes shake {
  0%, 100% { transform: translate(-50%, -50%); }
  10%, 30%, 50%, 70%, 90% { transform: translate(-51%, -50%); }
  20%, 40%, 60%, 80% { transform: translate(-49%, -50%); }
}
</style>

方法二:使用 GSAP 动画库

GSAP 提供更灵活的动画控制,适合复杂抖动效果。

用vue实现弹窗抖动

安装 GSAP

npm install gsap

模板部分

<template>
  <div class="modal" ref="modal" @click="shakeModal">
    <div class="modal-content">
      <p>点击弹窗触发抖动</p>
    </div>
  </div>
</template>

脚本部分

用vue实现弹窗抖动

<script>
import { gsap } from "gsap";

export default {
  methods: {
    shakeModal() {
      gsap.to(this.$refs.modal, {
        x: -10,
        duration: 0.1,
        repeat: 5,
        yoyo: true,
        onComplete: () => {
          gsap.set(this.$refs.modal, { x: 0 });
        }
      });
    }
  }
};
</script>

样式部分

<style>
.modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 20px;
  background: white;
  border: 1px solid #ccc;
  border-radius: 8px;
}
</style>

注意事项

  1. 性能优化
    CSS 动画性能通常优于 JavaScript 动画,适合简单效果。GSAP 适合需要精细控制的场景。

  2. 浏览器兼容性
    CSS transformanimation 在现代浏览器中支持良好,旧版本需加前缀(如 -webkit-)。

  3. 交互逻辑
    可通过 v-ifv-show 控制弹窗显示,抖动作为附加效果。

以上方法可根据实际需求调整参数(如抖动幅度、持续时间)。

标签: vue
分享给朋友:

相关文章

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: npm…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…

vue 实现协同

vue 实现协同

Vue 实现协同编辑的方案 协同编辑指多个用户同时编辑同一文档并实时同步更改。Vue 结合相关库和技术可轻松实现该功能。 使用 WebSocket 实现实时通信 WebSocket 提供全双工通信,…

vue 实现hover

vue 实现hover

Vue 实现 Hover 效果的方法 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 伪类 :hover 最简单的方式是直接使用 CSS 的 :hov…