news 2026/9/11 6:17:17

用 Lenis 给网站加上电影感平滑滚动:3 分钟上手的平滑滚动库教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Lenis 给网站加上电影感平滑滚动:3 分钟上手的平滑滚动库教程

用 Lenis 给网站加上电影感平滑滚动:3 分钟上手的平滑滚动库教程

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

Lenis 是一个 gzip 后只有几 KB、零依赖的轻量级平滑滚动库,它直接包装浏览器原生滚动,让网页像电影镜头一样顺滑地滑过去,而 sticky 定位、锚点跳转和无障碍访问全都照常工作。下面用最短的路径,把这个前端滚动动画方案接进你的项目。

先说清楚:平滑滚动到底解决了什么问题

很多网站滚一下"跳一下",根源是原生滚动的步进节奏和页面动画没对上。Lenis(拉丁语里"smooth"的意思)的思路不是造一个假滚动条,而是接管滚轮和触摸事件,自己按帧插值出滚动位置,再把真实滚动交还给浏览器。这样做的好处很实际:

  • 体积小到可以忽略,打包进任何项目都不心疼;
  • position: sticky、hash 锚点、屏幕阅读器这些原生能力不丢;
  • 竖直、水平、嵌套容器,一个实例都能管。

一条命令装好 Lenis

安装这一步没什么好讲的,包管理器三选一,跑一下就行:

npm i lenis

跑完后确认终端无报错、node_modules里多出了lenis目录,这一步就成功了。

最小可运行示例:new Lenis 之后要"喂帧"

这是整个 Lenis 教程的核心,就几行:

import Lenis from 'lenis' const lenis = new Lenis() function raf(time) { lenis.raf(time) requestAnimationFrame(raf) } requestAnimationFrame(raf)

原理很简单:Lenis 每帧需要一次raf调用来推进插值。保存文件、刷新页面,滚一下鼠标滚轮——页面应该缓缓"滑"过去,而不是生硬地一跳,对上了就跑起来就完事了。这里有个小技巧:不想手写这个循环的话,初始化时传autoRaf: true让它自己开。

⚙️ 最常调的三个配置项

参数列表看着长,日常真正会用到的就三个:

  • lerp:插值强度,默认0.1。调小(如0.05)更绵长拖沓,调大(如0.2)更跟手;
  • duration:平滑动画时长,单位秒。它和lerp调的是同一种"松紧感",建议只动其中一个,别两个一起拧;
  • wrapper:滚动容器,默认window。页面里有独立滚动的容器(比如侧边栏、全屏画廊)时,把那个元素传进去,让 Lenis 去管它。

另外建议把仓库里 packages/core/lenis.css 的规则一并引入页面,尤其是html.lenis相关的几条,能避免和scroll-behavior打架。

🎬 和 GSAP、React 项目怎么配合

  • GSAP ScrollTrigger:把 Lenis 的scroll事件接到ScrollTrigger.update,再改用gsap.ticker驱动lenis.raf,让两者共用同一个时间轴即可,具体写法可参考仓库 README.md 的 Setup 部分;
  • React / Vue:monorepo 里有官方适配包,用 Provider 包住应用、组件里取 Lenis 实例即可,用法详见 packages/react/README.md 和 packages/vue/README.md;
  • 整屏吸附:想做出"一屏一屏"的吸附效果,可以直接试 packages/snap 插件,它和平滑滚动是配套的,不会互相拉扯。

落地前,先把这两件事做了

第一件:尊重用户的动效偏好。检测到prefers-reduced-motion或用户明确不想看动画时,调一次lenis.stop()切回原生滚动,几行代码就能换来一个不会"晕"掉用户的网站。第二件:别在scroll回调里干重活,把视差、进度条之类的计算挂到同一个raf循环里,滚动体验的稳定性会明显不一样。

跑通上面三步之后,建议下一步只动lerp一个参数,把0.050.2扫一遍手感,找到和你页面气质匹配的那个值——这比研究其他十几个配置项划算得多。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 6:15:34

SSM框架核心技术解析与Java企业级开发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 6:13:29

国产宇航级SSD技术突破与应用实践

1. 航天存储的特殊性与挑战航天器存储系统需要面对极端环境考验,包括但不限于:宇宙射线辐射:地球轨道上的辐射强度是地面的100-1000倍温度剧烈变化:向阳面与背阴面温差可达150℃机械振动:发射阶段承受10-15G的振动加速…

作者头像 李华