当前位置:首页 > JavaScript

js实现弹跳

2026-03-14 05:20:52JavaScript

实现弹跳动画的JavaScript方法

使用requestAnimationFrame实现平滑的弹跳动画效果。以下是一个基础示例,模拟小球自由落体后弹跳的物理效果:

js实现弹跳

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let y = 0;
let velocity = 0;
const gravity = 0.5;
const damping = 0.8; // 弹力系数
const ballRadius = 20;

function animate() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.beginPath();
    ctx.arc(canvas.width/2, y, ballRadius, 0, Math.PI*2);
    ctx.fillStyle = 'red';
    ctx.fill();

    velocity += gravity;
    y += velocity;

    // 碰撞检测
    if (y + ballRadius > canvas.height) {
        y = canvas.height - ballRadius;
        velocity *= -damping; // 反弹时速度衰减
    }

    requestAnimationFrame(animate);
}
animate();

CSS结合JavaScript的弹跳效果

通过CSS动画与JavaScript控制结合实现弹性效果:

js实现弹跳

const box = document.querySelector('.box');
box.addEventListener('click', () => {
    box.style.animation = 'bounce 0.5s ease';
    setTimeout(() => {
        box.style.animation = '';
    }, 500);
});

配套CSS:

@keyframes bounce {
    0%, 100% { transform: translateY(0); }
    25% { transform: translateY(-30px); }
    50% { transform: translateY(0); }
    75% { transform: translateY(-15px); }
}

使用第三方库实现高级弹跳

GSAP库提供更强大的弹性动画控制:

gsap.to(".object", {
    y: 100,
    duration: 1,
    ease: "bounce.out" // 内置弹跳缓动函数
});

物理参数调整建议

  • 重力系数:gravity值越大下落越快
  • 弹性系数:damping介于0-1之间,值越大弹跳高度衰减越慢
  • 初始速度:可通过修改velocity初始值实现不同高度的下落

性能优化注意事项

  • 使用transform属性进行位移比修改top/left性能更好
  • 避免在动画过程中触发重排操作
  • 复杂场景建议使用WebGL或专门的物理引擎

标签: js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…