Lenis 快速上手指南:3 步给网页加上丝滑的平滑滚动
2026/9/11 2:49:04 网站建设 项目流程

Lenis 快速上手指南:3 步给网页加上丝滑的平滑滚动

【免费下载链接】lenisSmooth scroll as it should be项目地址: https://gitcode.com/GitHub_Trending/le/lenis

你有没有被浏览器原生滚动折磨过:滚轮一拨,页面"咯噔"一下跳到新位置,视差动画永远慢半拍。Lenis 是一款只有几 KB、零依赖的前端平滑滚动库,帮做网站的新手用最少的代码,把滚动调出"被弹簧缓冲过"的顺滑感。

🎯 什么场景值得上平滑滚动?

Lenis 的底层思路很克制:不伪造滚动,而是包裹浏览器原生滚动。这意味着 sticky 定位、锚点跳转、无障碍支持全都照常工作,不会把页面搞成"假滚动"。

它主要服务这几类站点:

  • 滚动驱动的 WebGL / 3D 页面
  • 视差、跟随类视觉动效
  • 配合 GSAP ScrollTrigger 的时间轴动画
  • 横向滚动与落地页

名字也点题:Lenis 在拉丁语里就是 "smooth" 的意思。

🚀 3 步跑通 Lenis 平滑滚动:从安装到生效

第一步,用包管理器装它(npm / yarn / pnpm 都行):npm i lenis

第二步,在 JS 入口初始化。autoRaf: true表示让它自己驱动动画循环,第二行 import 的是官方推荐的配套 CSS:

import Lenis from 'lenis' import 'lenis/dist/lenis.css' const lenis = new Lenis({ autoRaf: true })

第三步,刷新页面滚一下——到这里平滑滚动就跑起来了。

两个补充:想自己掌握帧循环,去掉autoRaf,改在requestAnimationFrame里每帧调lenis.raf(time);没有构建工具的静态页,直接引一段浏览器脚本,一行new Lenis({ autoRaf: true })也能跑。

⚡ 联动 GSAP ScrollTrigger 的正确姿势

ScrollTrigger 玩家注意这里有个"抢方向盘"的坑:两边各跑各的帧循环,不同步就会抖。正确做法是把帧循环整体交给 GSAP 的时钟:

lenis.on('scroll', ScrollTrigger.update) gsap.ticker.add((time) => lenis.raf(time * 1000)) gsap.ticker.lagSmoothing(0)

三行各管一件事:同步滚动事件给 ScrollTrigger、每帧驱动 Lenis、关闭 GSAP 延迟平滑。初始化记得写autoRaf: false,别跑两个循环。

🧩 React 里 1 个组件接入 Lenis

React 封装在 packages/react/,核心是一个<ReactLenis>组件:

import { ReactLenis, useLenis } from 'lenis/react' <ReactLenis root />

它负责创建实例并注入上下文,root表示挂在<html>滚动容器上;子组件用useLenis钩子即可拿到实例,不用层层传 props。Vue / Nuxt 有对应包,滚动吸附则是独立插件,见 packages/snap/。

⚙️ 参数速查:lenis 使用方法的 5 个高频配置

配置项作用默认值什么时候调
autoRaf是否自动跑动画循环false纯 JS 项目设true;接 GSAP 必须false
lerp插值强度(0~1),决定滚动的"弹性"0.1想要跟手调大,想要绵密调小
duration平滑动画时长(秒)1.2easing一起微调手感
easing缓动函数内置自定义曲线想要特定手感时替换
wrapper滚动容器window自定义容器(横向页面)必设

另外两个高频项:anchors: true让锚点链接也走平滑滚动;orientation可切horizontal做横向滚动。

⚠️ 避坑清单:生产环境别忽略的细节

  • CSS 别忘了:官方排错清单第一条就是引入配套 CSS,很多"滚动没反应"都栽在这。
  • 循环别停autoRaf: false时忘了调raf(),页面滚动会直接冻结。
  • 嵌套滚动allowNestedScroll: true最省事,但每次滚动都查 DOM 有性能开销;在意性能就用data-lenis-prevent属性精确豁免。
  • scroll-snap:CSS 原生吸附不支持,需要吸附用 snap 插件。
  • 已知边界:Safari 帧率上限 60fps;iframe 不转发 wheel 事件,平滑滚动在其上方失效。
  • 卸载时调destroy():清理实例和全部事件,避免残留。

写在最后:文档、源码与贡献入口

一句话总结:Lenis 用几 KB 的代码换回原生滚动该有的顺滑,同时保住 sticky、锚点这些地基。

完整 API 表格见 README.md,设计思路见 MANIFESTO.md,想读懂实现可以从 packages/core/src/ 的核心源码看起,想参与项目按 CONTRIBUTING.md 的流程走即可。

【免费下载链接】lenisSmooth scroll as it should be项目地址: https://gitcode.com/GitHub_Trending/le/lenis

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询