当前位置:首页 > JavaScript

js实现减速

2026-03-14 09:50:57JavaScript

JavaScript 实现减速效果

在 JavaScript 中实现减速效果通常用于动画、游戏或滚动行为中,使运动逐渐变慢直至停止。以下是几种常见实现方法:

缓动函数(Easing Function)

使用缓动函数中的 ease-out 效果可实现减速。例如:

function easeOutQuad(t) {
  return t * (2 - t);
}

let startTime;
function animate(currentTime) {
  if (!startTime) startTime = currentTime;
  const elapsed = currentTime - startTime;
  const duration = 1000; // 动画持续时间(毫秒)
  const progress = Math.min(elapsed / duration, 1);
  const easedProgress = easeOutQuad(progress);

  // 应用缓动值(例如移动元素)
  element.style.transform = `translateX(${easedProgress * 100}px)`;

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

物理减速(摩擦力模型)

通过模拟摩擦力逐步减少速度:

let speed = 10; // 初始速度
const friction = 0.95; // 摩擦系数(0~1)

function slowDown() {
  speed *= friction;
  if (Math.abs(speed) < 0.1) speed = 0; // 停止阈值

  // 应用速度(例如移动元素)
  element.style.left = `${parseFloat(element.style.left) + speed}px`;

  if (speed !== 0) {
    requestAnimationFrame(slowDown);
  }
}
slowDown();

CSS + JavaScript 结合

通过 CSS Transition 的 ease-out 曲线实现减速,JavaScript 触发变化:

element.style.transition = "transform 1s ease-out";
element.style.transform = "translateX(100px)";

滚动减速效果

为页面滚动添加减速行为:

js实现减速

let targetScroll = 500;
let currentScroll = window.scrollY;
const decelerateScroll = () => {
  currentScroll += (targetScroll - currentScroll) * 0.1;
  window.scrollTo(0, currentScroll);

  if (Math.abs(targetScroll - currentScroll) > 1) {
    requestAnimationFrame(decelerateScroll);
  }
};
decelerateScroll();

注意事项

  • 性能优化:优先使用 requestAnimationFrame 而非 setInterval
  • 停止条件:需设置速度或距离的阈值以避免无限计算。
  • CSS 硬件加速:对 DOM 操作使用 transform 比直接修改 left/top 更高效。

根据具体场景选择合适的方法,缓动函数适合动画,物理模型适合交互控制。

标签: js
分享给朋友:

相关文章

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…