You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现全站全局平滑滚动效果(无需点击触发)

实现全局始终生效的平滑滚动效果

方案1:纯CSS快速实现基础平滑滚动

如果只需要基础的平滑过渡效果,直接给根元素加CSS属性就能搞定,所有滚动行为(鼠标滚轮、触摸滑动、键盘操作)都会自动触发平滑效果:

html {
  scroll-behavior: smooth;
}

缺点是动画效果比较基础,没有惯性或自定义缓动的高级特性,适合对滚动质感要求不高的场景。

方案2:用Luxy.js实现高级惯性平滑滚动(匹配参考效果)

你参考的示例用的就是Luxy.js,它能实现带有延迟跟随感的高级平滑滚动,全程自动生效,不需要触发元素。步骤如下:

  1. 安装或引入Luxy.js:
    • 通过npm安装:npm install luxy.js --save
    • 或者直接下载源码后,在页面底部引入脚本文件
  2. 调整HTML结构,把所有页面内容放到指定容器里:
<div id="luxy">
  <!-- 你的所有页面内容都放在这里 -->
</div>
  1. 初始化Luxy.js:
// 如果是npm引入
import luxy from 'luxy.js';
// 如果是直接引入脚本,直接调用即可
luxy.init({
  wrapper: '#luxy', // 内容容器的选择器
  wrapperSpeed: 0.08, // 滚动速度系数,数值越小滚动越平缓
});

这个方案的效果和你参考的示例完全一致,滚动时页面会有自然的惯性跟随感,支持所有滚动操作方式。

方案3:自定义JavaScript实现(高度定制场景)

如果不想依赖第三方库,可以自己写JS实现平滑滚动,通过监听滚动事件结合动画帧来实现缓动效果:

let isScrolling = false;

const smoothScroll = () => {
  const currentScroll = window.pageYOffset;
  const targetScroll = document.documentElement.scrollTop || document.body.scrollTop;
  const diff = targetScroll - currentScroll;
  const scrollStep = diff * 0.1; // 调整这个数值改变平滑程度,越大越快

  if (Math.abs(scrollStep) > 0.1) {
    window.scrollTo(0, currentScroll + scrollStep);
    requestAnimationFrame(smoothScroll);
  } else {
    isScrolling = false;
  }
};

window.addEventListener('scroll', () => {
  if (!isScrolling) {
    isScrolling = true;
    requestAnimationFrame(smoothScroll);
  }
});

你可以根据需求调整scrollStep的系数,实现不同的平滑质感。

内容的提问来源于stack exchange,提问作者Agent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:50:12