当前位置:首页 > VUE

vue 实现跳动爱心

2026-01-08 16:21:32VUE

实现跳动爱心的步骤

使用CSS动画和Vue动态绑定

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

vue 实现跳动爱心

<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实现心跳效果。

vue 实现跳动爱心

<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增删改查简单实现

基础环境搭建 确保已安装Node.js和Vue CLI。通过以下命令创建Vue项目: npm install -g @vue/cli vue create vue-crud-demo cd vue…

vue的实现原理

vue的实现原理

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。 响应式系统 Vue 使用 Object.definePr…

vue.js实现轮播

vue.js实现轮播

vue.js实现轮播的方法 使用第三方库(如Swiper) 安装Swiper库: npm install swiper 在Vue组件中引入Swiper: <template>…

vue实现图片搜索

vue实现图片搜索

Vue实现图片搜索功能 使用HTML5的File API获取图片 通过<input type="file">元素让用户选择图片文件,使用FileReader对象读取图片数据。 <…

vue实现多人视频

vue实现多人视频

实现多人视频通话的Vue方案 使用WebRTC技术结合Vue框架可以构建多人视频通话应用。以下是核心实现方法: 技术栈选择 Vue 2/3作为前端框架 WebRTC用于实时通信 Socket.io…

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…