当前位置:首页 > 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>组件可以用于控制爱心的显隐和跳动效果。

vue 实现跳动爱心

<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实现tab换行

vue实现tab换行

Vue实现Tab切换的常见方法 使用Vue实现Tab切换功能可以通过多种方式完成,以下是几种常见的方法: 动态组件结合v-if或v-show 通过v-if或v-show控制不同Tab内容的显示与隐…

vue实现滑块

vue实现滑块

Vue 实现滑块组件的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和事件监听实现基础滑块功能。创建一个包含 input 元素的组件,类型设置为 range,并绑定到…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…

vue cli 实现

vue cli 实现

Vue CLI 实现步骤 安装 Vue CLI 确保 Node.js 版本在 8.9 或以上。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 创建新项目 使…

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue 实现 confirm

vue 实现 confirm

实现确认对话框的方法 在Vue中实现确认对话框可以通过多种方式完成,包括使用内置组件、第三方库或自定义组件。 使用浏览器原生confirm 最简单的实现方式是直接调用浏览器原生的confirm方法。…