当前位置:首页 > VUE

vue 实现跳动爱心

2026-02-11 06:50:43VUE

实现跳动爱心的 Vue 组件

以下是使用 Vue 3 实现跳动爱心的代码示例,通过 CSS 动画和动态样式实现效果。

模板部分

<template>
  <div class="heart-container">
    <div 
      class="heart" 
      :style="{ transform: `scale(${scale})` }"
      @click="toggleBeat"
    ></div>
  </div>
</template>

脚本部分

<script>
import { ref } from 'vue';

export default {
  setup() {
    const scale = ref(1);
    const isBeating = ref(false);
    let beatInterval;

    const startBeat = () => {
      isBeating.value = true;
      let growing = true;
      beatInterval = setInterval(() => {
        if (growing) {
          scale.value += 0.05;
          if (scale.value >= 1.2) growing = false;
        } else {
          scale.value -= 0.05;
          if (scale.value <= 1) growing = true;
        }
      }, 100);
    };

    const stopBeat = () => {
      isBeating.value = false;
      clearInterval(beatInterval);
      scale.value = 1;
    };

    const toggleBeat = () => {
      isBeating.value ? stopBeat() : startBeat();
    };

    return { scale, toggleBeat };
  }
};
</script>

样式部分

<style scoped>
.heart-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.heart {
  width: 100px;
  height: 100px;
  background-color: red;
  position: relative;
  transform: rotate(45deg);
  cursor: pointer;
  transition: transform 0.1s ease;
}

.heart:before,
.heart:after {
  content: '';
  width: 100px;
  height: 100px;
  background-color: red;
  border-radius: 50%;
  position: absolute;
}

.heart:before {
  top: -50px;
  left: 0;
}

.heart:after {
  top: 0;
  left: -50px;
}
</style>

实现原理

  1. 爱心形状
    通过 CSS 创建正方形元素并旋转 45 度,配合两个伪元素形成圆形,组合成爱心形状。

  2. 跳动动画
    使用 JavaScript 定时器动态修改 transform 的 scale 值,在 1 到 1.2 之间循环变化,模拟心跳效果。

  3. 交互控制
    点击爱心时触发 toggleBeat 方法,控制动画的启动和停止。

  4. 响应式样式
    通过 Vue 的 ref 响应式变量 scale 动态绑定样式,实现平滑的缩放效果。

    vue 实现跳动爱心

扩展建议

  1. 添加更多动画效果如颜色渐变或位置移动
  2. 使用 CSS @keyframes 实现更复杂的动画序列
  3. 通过 props 接收自定义颜色和大小参数
  4. 添加音效增强交互体验

该组件可以直接在 Vue 项目中导入使用,或根据需求进一步调整动画参数和样式。

标签: 爱心vue
分享给朋友:

相关文章

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心机制基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3)。以下是具体实现方法: 基于 Vue…

vue实现高亮

vue实现高亮

Vue 实现文本高亮的方法 在 Vue 中实现文本高亮可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-html 指令 通过 v-html 指令可以动态插入 HTML 内容,将需要高…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…

vue实现pc

vue实现pc

Vue 实现 PC 端应用开发 Vue.js 是一个流行的前端框架,适用于构建 PC 端 Web 应用。以下是关键步骤和最佳实践: 项目初始化 使用 Vue CLI 或 Vite 创建项目:…

vue 实现图钉

vue 实现图钉

实现图钉效果的步骤 在Vue中实现图钉(固定位置)效果,可以通过CSS的position: sticky属性或监听滚动事件动态修改元素样式。以下是两种常见方法: 方法一:使用CSS的posi…

vue简单实现

vue简单实现

Vue 简单实现示例 以下是一个使用 Vue.js 创建简单应用的示例,涵盖基本功能如数据绑定、事件处理和组件化。 基础 HTML 结构 <!DOCTYPE html> <ht…