当前位置:首页 > VUE

vue 实现抛物线

2026-02-24 20:00:01VUE

Vue 实现抛物线动画

在 Vue 中实现抛物线动画,可以通过 CSS 动画或 JavaScript 动态计算位置来实现。以下是两种常见方法:

方法一:使用 CSS animation@keyframes

通过 CSS 定义抛物线关键帧动画,适用于简单的抛物线效果。

<template>
  <div class="ball" :style="{ left: x + 'px', top: y + 'px' }"></div>
</template>

<script>
export default {
  data() {
    return {
      x: 0,
      y: 0
    };
  },
  mounted() {
    this.startAnimation();
  },
  methods: {
    startAnimation() {
      const duration = 2000; // 动画时长(毫秒)
      const startTime = Date.now();

      const animate = () => {
        const elapsed = Date.now() - startTime;
        const progress = Math.min(elapsed / duration, 1);

        // 抛物线公式:y = a * x^2 + b * x + c
        this.x = progress * 300; // 水平位移
        this.y = 200 * Math.pow(progress, 2) - 100 * progress; // 垂直位移

        if (progress < 1) {
          requestAnimationFrame(animate);
        }
      };

      animate();
    }
  }
};
</script>

<style>
.ball {
  position: absolute;
  width: 20px;
  height: 20px;
  background-color: red;
  border-radius: 50%;
  transition: all 0.1s linear;
}
</style>

方法二:使用 GSAP 动画库

GSAP 提供了更强大的动画控制能力,适合复杂的抛物线效果。

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

<script>
import { gsap } from 'gsap';

export default {
  mounted() {
    this.startGSAPAnimation();
  },
  methods: {
    startGSAPAnimation() {
      gsap.to(this.$refs.ball, {
        duration: 2,
        x: 300,
        y: 200,
        ease: "power1.inOut"
      });
    }
  }
};
</script>

<style>
.ball {
  position: absolute;
  width: 20px;
  height: 20px;
  background-color: blue;
  border-radius: 50%;
}
</style>

方法三:自定义抛物线函数

通过数学公式动态计算位置,实现更灵活的抛物线效果。

methods: {
  parabolicMotion(startX, startY, endX, endY, duration) {
    const startTime = Date.now();
    const animate = () => {
      const elapsed = Date.now() - startTime;
      const progress = Math.min(elapsed / duration, 1);

      // 计算当前 x 和 y 坐标
      this.x = startX + (endX - startX) * progress;
      this.y = startY + (endY - startY) * progress - 200 * Math.pow(progress, 2);

      if (progress < 1) {
        requestAnimationFrame(animate);
      }
    };

    animate();
  }
}

注意事项

  • 抛物线公式一般形式为 $y = ax^2 + bx + c$,通过调整系数可以改变抛物线形状。
  • 使用 requestAnimationFrame 实现平滑动画,避免直接修改 DOM。
  • 对于复杂动画,推荐使用 GSAP 或 Anime.js 等专业动画库。

vue 实现抛物线

标签: 抛物线vue
分享给朋友:

相关文章

vue中登陆实现逻辑

vue中登陆实现逻辑

Vue 中登录实现逻辑 前端实现逻辑 表单验证 使用 Vue 的表单验证库(如 VeeValidate)或自定义验证规则,确保用户输入的账号和密码符合要求。例如,检查邮箱格式、密码长度等。 发送登录…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <template…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在Vu…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{…

vue 实现关闭

vue 实现关闭

Vue 实现关闭功能的方法 在Vue中实现关闭功能通常涉及组件销毁、模态框隐藏或路由跳转等场景。以下是几种常见实现方式: 销毁当前组件 使用v-if或v-show控制组件显示/隐藏,适用于局部组件:…

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于…