1. 准备工作

在开始之前,请确保你已经安装了Vue.js。以下是实现该效果的几个关键步骤:

  • HTML结构:创建一个按钮和图片元素。
  • CSS样式:定义图片的初始样式和摇晃效果。
  • Vue实例:在Vue实例中处理点击事件和摇晃逻辑。

2. HTML结构

<template>
  <div id="app">
    <button @click="shakeImage">点击我摇动图片</button>
    <img :class="{ shaking: isShaking }" src="your-image.jpg" alt="Shake Image">
  </div>
</template>

3. CSS样式

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

@keyframes shake {
  10%, 90% {
    transform: translate3d(-1px, 0, 0);
  }
  
  20%, 80% {
    transform: translate3d(2px, 0, 0);
  }

  30%, 50%, 70% {
    transform: translate3d(-4px, 0, 0);
  }

  40%, 60% {
    transform: translate3d(4px, 0, 0);
  }
}
</style>

4. Vue实例

现在,我们将在Vue实例中处理点击事件和摇晃逻辑。以下是JavaScript代码:

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

在上述代码中,我们定义了一个名为shakeImage的方法,该方法在按钮被点击时触发。它将isShaking数据属性设置为true,这将触发CSS动画。动画完成后,我们使用setTimeoutisShaking重置为false,停止动画。

5. 总结

6. 扩展

如果你想要进一步增强这个效果,可以考虑以下扩展:

  • 随机摇晃:修改shakeImage方法,使其在每次点击时产生不同的摇晃效果。
  • 摇晃持续时间:根据需要调整CSS动画的持续时间。
  • 响应式设计:确保图片摇晃效果在不同设备和屏幕尺寸上都能正常工作。