Lenis
平滑滚动
Lenis 是 darkroom.engineering 开源的平滑滚动库,以 requestAnimationFrame 替代原生滚动行为,解决 scroll-linked 动画异步导致的跳帧与延迟,单行 new Lenis() 即可启用,压缩后体积不足 4KB。
| 收费 | 免费开源,可赞助或与darkroom合作 |
|---|---|
| 平台 | JavaScript / React / Vue / Framer |
| 中文 | 官网无中文,第三方博客有中文介绍 |
| 用途 | 为网页提供轻量、高性能的平滑滚动,支持滚动动画同步、水平滚动、无限滚动、滚动吸附 |
Lenis 并非简单的 scroll-behavior 增强,而是通过 raf 循环接管滚动计算,使 WebGL、DOM 动画与滚动帧完全同步。官网列举了 7 项关键特性:
Lenis 专为解决浏览器原生滚动与动画不同步而设计,官网明确说明其诞生初衷是“同步 WebGL 与 DOM”。第三方博客提供了与 GSAP ScrollTrigger 的集成示例:
Lenis 最初是 darkroom.engineering 的内部工具,现已开源并成为多个知名项目的底层滚动方案。官网展示的合作方包括 Netflix、Rockstar Games(Grand Theft Auto VI)、Google Cloud、Unseen Studio、Lando Norris 等。Locomotive Scroll 也基于 Lenis 构建。
Q1:Lenis 与原生 scroll-behavior: smooth 有何本质区别?
A1:Lenis 使用 requestAnimationFrame 驱动滚动计算,而非浏览器原生平滑滚动。这使得滚动与 WebGL、DOM 动画在同一帧更新,避免异步导致的跳帧与延迟。同时 Lenis 提供事件系统、自定义缓动、方向控制等原生 smooth 不具备的能力。
Q2:Lenis 是否会影响页面可访问性?
A2:官网明确声明 Lenis 不劫持滚动条、不使用 CSS transforms,且保持无障碍特性。第三方博客也确认其未引入 accessibility trade-offs。
Q3:如何在 React 或 Vue 项目中使用 Lenis?
A3:官方在 GitHub 仓库中提供了独立的 React 和 Vue 包,路径分别为 packages/react 和 packages/vue。安装 npm i lenis 后可按框架文档导入对应组件或 hook。
更多同类工具与网站,可在动画库分类继续挑选。
信息核实于 2026年7月,具体以官网为准。
评论
暂无评论