Lenis:轻量级平滑滚动引擎,提升网页交互体验
功能概述:重新定义平滑滚动
Lenis 是一个轻量级的平滑滚动库,旨在解决传统网页滚动体验不佳的问题。它通过精确的数学计算和高效的动画处理,实现了丝滑般的滚动效果,让用户在浏览网页时获得更加舒适和愉悦的体验。无论是简单的页面滚动,还是复杂的交互场景,Lenis 都能轻松应对,为开发者提供了强大而灵活的工具。
快速上手:3 步实现平滑滚动
安装 Lenis
你可以通过 npm 安装 Lenis 库,在终端执行以下命令:
npm i lenis
如果你不使用构建系统,也可以通过 CDN 直接在 HTML 中引入:
<script src="https://unpkg.com/lenis@1.1.4/dist/lenis.min.js"></script>
初始化 Lenis
在你的 JavaScript 文件中导入并初始化 Lenis:
// 导入 Lenis
import Lenis from 'lenis';
// 创建 Lenis 实例
const lenis = new Lenis();
// 监听滚动事件
lenis.on('scroll', (e) => {
console.log(e); // 输出滚动相关信息
});
// 启动滚动动画
function raf(time) {
lenis.raf(time); // 传入时间参数,驱动滚动动画
requestAnimationFrame(raf); // 循环调用,保持动画持续运行
}
requestAnimationFrame(raf);
添加必要 CSS
为了增强滚动体验,需要添加以下 CSS 规则:
html.lenis, html.lenis body {
height: auto; /* 确保页面高度自适应 */
}
.lenis.lenis-smooth {
scroll-behavior: auto !important; /* 覆盖默认滚动行为 */
}
场景应用:行业实践案例
电商商品页
在电商商品页中,Lenis 可以实现商品图片的平滑切换和页面的流畅滚动。当用户浏览商品详情时,平滑的滚动效果能够让用户更加专注于商品信息,提升购物体验。例如,在商品图片展示区域,通过 Lenis 实现图片的平滑过渡,让用户在滑动过程中感觉更加自然。
新闻阅读
对于新闻阅读类网站,Lenis 可以提供舒适的阅读体验。用户在上下滚动阅读新闻内容时,平滑的滚动效果减少了视觉疲劳,使阅读更加轻松。特别是在长篇新闻中,Lenis 能够保持滚动的稳定性和连贯性,让用户能够专注于内容本身。
数据可视化
在数据可视化页面中,Lenis 可以与图表交互相结合,实现数据的动态展示。当用户滚动页面时,图表可以随着滚动进度平滑地更新数据展示,增强数据的可读性和交互性。例如,在展示销售数据趋势时,随着页面滚动,图表可以平滑地展示不同时间段的数据变化。
深度配置:自定义滚动体验
Lenis 提供了丰富的配置选项,你可以根据项目需求进行自定义设置。以下是一些常用的配置项:
| 配置项 | 说明 | 适用场景 |
|---|---|---|
wrapper |
滚动容器,默认为 window |
当需要在特定容器内实现滚动效果时使用,如自定义滚动区域 |
smoothWheel |
是否启用鼠标滚轮平滑,默认开启 | 希望鼠标滚轮滚动更加平滑的场景 |
easing |
平滑滚动使用的缓动函数,默认提供自定义函数 | 需要调整滚动加速度变化曲线的场景,可根据需求选择不同的缓动函数 |
[!TIP] 缓动函数(控制滚动加速度变化的数学曲线)可以选择 Easings.net 上的任何缓动函数,以实现不同的滚动效果。
扩展生态:与其他工具集成
与 GSAP ScrollTrigger 集成
对于更复杂的动画同步,可以结合使用 Lenis 与 GSAP:
const lenis = new Lenis();
lenis.on('scroll', ScrollTrigger.update); // 当滚动时更新 ScrollTrigger
gsap.ticker.add(time => {
lenis.raf(time * 1000); // 将 GSAP 的时间转换为 Lenis 需要的时间格式
});
gsap.ticker.lagSmoothing(0); // 关闭 GSAP 的滞后平滑
在 React 中的应用
Lenis 提供了 React 组件,方便在 React 项目中使用。你可以查看项目中 packages/react 目录下的相关文件,了解具体的使用方法。
常见误区:避免集成错误
误区一:未正确初始化滚动循环
错误表现:滚动效果不流畅或无法正常工作。
解决方案:确保正确调用 requestAnimationFrame 来启动滚动循环,并且在循环中调用 lenis.raf(time)。
误区二:忽略 CSS 配置
错误表现:滚动效果不符合预期,可能出现抖动或跳跃。 解决方案:务必添加必要的 CSS 规则,确保页面高度自适应和滚动行为的正确设置。
误区三:过度配置参数
错误表现:滚动性能下降,出现卡顿。 解决方案:只配置必要的参数,避免过度自定义导致性能问题。对于大多数项目,默认配置已经能够满足需求。
Lenis 以其5KB的极小包体积,为网页带来了卓越的平滑滚动体验。无论是简单的个人网站,还是复杂的企业级应用,Lenis 都能成为你提升用户体验的得力助手。如果你想为你的项目添加丝滑的滚动效果,不妨尝试使用 Lenis,让网页交互更加出色。
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
ERNIE-ImageERNIE-Image 是由百度 ERNIE-Image 团队开发的开源文本到图像生成模型。它基于单流扩散 Transformer(DiT)构建,并配备了轻量级的提示增强器,可将用户的简短输入扩展为更丰富的结构化描述。凭借仅 80 亿的 DiT 参数,它在开源文本到图像模型中达到了最先进的性能。该模型的设计不仅追求强大的视觉质量,还注重实际生成场景中的可控性,在这些场景中,准确的内容呈现与美观同等重要。特别是,ERNIE-Image 在复杂指令遵循、文本渲染和结构化图像生成方面表现出色,使其非常适合商业海报、漫画、多格布局以及其他需要兼具视觉质量和精确控制的内容创作任务。它还支持广泛的视觉风格,包括写实摄影、设计导向图像以及更多风格化的美学输出。Jinja00