当前位置:首页 > VUE

vue 实现跳动爱心

2026-01-08 16:21:32VUE

实现跳动爱心的步骤

使用CSS动画和Vue动态绑定

在Vue中创建一个跳动爱心,可以通过CSS动画结合Vue的动态绑定实现。定义一个爱心的形状,使用CSS关键帧动画控制缩放效果。

<template>
  <div class="heart" :style="{ transform: `scale(${scale})` }"></div>
</template>

<script>
export default {
  data() {
    return {
      scale: 1,
      animationInterval: null
    };
  },
  mounted() {
    this.animationInterval = setInterval(() => {
      this.scale = this.scale === 1 ? 1.2 : 1;
    }, 500);
  },
  beforeDestroy() {
    clearInterval(this.animationInterval);
  }
};
</script>

<style>
.heart {
  width: 50px;
  height: 50px;
  background-color: red;
  position: relative;
  transform: rotate(45deg);
  margin: 100px auto;
  transition: transform 0.3s ease;
}
.heart:before,
.heart:after {
  content: "";
  width: 50px;
  height: 50px;
  background-color: red;
  border-radius: 50%;
  position: absolute;
}
.heart:before {
  top: -25px;
  left: 0;
}
.heart:after {
  top: 0;
  left: -25px;
}
</style>

使用第三方动画库

如果需要更复杂的动画效果,可以引入anime.jsGSAP等动画库。以下示例使用anime.js实现心跳效果。

<template>
  <div class="heart" ref="heart"></div>
</template>

<script>
import anime from 'animejs';

export default {
  mounted() {
    anime({
      targets: this.$refs.heart,
      scale: [1, 1.3, 1],
      duration: 800,
      loop: true,
      easing: 'easeInOutSine'
    });
  }
};
</script>

<style>
.heart {
  width: 50px;
  height: 50px;
  background-color: red;
  position: relative;
  transform: rotate(45deg);
  margin: 100px auto;
}
.heart:before,
.heart:after {
  content: "";
  width: 50px;
  height: 50px;
  background-color: red;
  border-radius: 50%;
  position: absolute;
}
.heart:before {
  top: -25px;
  left: 0;
}
.heart:after {
  top: 0;
  left: -25px;
}
</style>

使用SVG和Vue动态属性

SVG路径可以更灵活地绘制爱心形状,通过动态修改属性实现动画效果。

<template>
  <svg width="100" height="100" viewBox="0 0 100 100">
    <path
      :d="pathData"
      fill="red"
      :transform="`scale(${scale})`"
      transform-origin="50 50"
    />
  </svg>
</template>

<script>
export default {
  data() {
    return {
      pathData: "M50 30 L20 10 A20 20 0 0 0 50 50 A20 20 0 0 0 80 10 Z",
      scale: 1
    };
  },
  mounted() {
    setInterval(() => {
      this.scale = this.scale === 1 ? 1.2 : 1;
    }, 500);
  }
};
</script>

结合Vue过渡效果

Vue的<transition>组件可以用于控制爱心的显隐和跳动效果。

<template>
  <transition name="pulse">
    <div class="heart"></div>
  </transition>
</template>

<style>
.heart {
  width: 50px;
  height: 50px;
  background-color: red;
  position: relative;
  transform: rotate(45deg);
  margin: 100px auto;
}
.heart:before,
.heart:after {
  content: "";
  width: 50px;
  height: 50px;
  background-color: red;
  border-radius: 50%;
  position: absolute;
}
.heart:before {
  top: -25px;
  left: 0;
}
.heart:after {
  top: 0;
  left: -25px;
}
.pulse-enter-active, .pulse-leave-active {
  transition: transform 0.5s;
}
.pulse-enter, .pulse-leave-to {
  transform: rotate(45deg) scale(1.2);
}
</style>

以上方法均能实现爱心的跳动效果,选择适合项目需求的方式即可。CSS动画适合简单场景,第三方库适合复杂动画,SVG适合需要精确控制路径的场景。

vue 实现跳动爱心

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

相关文章

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容…

vue 实现表单

vue 实现表单

Vue 表单实现方法 Vue.js 提供了多种方式实现表单,包括双向数据绑定、表单验证和动态表单生成。以下是常见的实现方法: 基础表单绑定 使用 v-model 指令实现表单元素与数据的双向绑定:…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue实现展开

vue实现展开

展开功能的实现方法 在Vue中实现展开功能可以通过多种方式完成,常见的有使用v-show、v-if指令,结合CSS过渡动画或第三方组件库。 使用v-show控制显示隐藏 通过v-show指令可以简…