当前位置:首页 > 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
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…