基础使用
简介
Lenis 是一个轻量级的 JavaScript 库,专注于实现 平滑滚动(Smooth Scrolling) 效果。它通过优化浏览器的原生滚动行为,提供更流畅的滚动体验,支持自定义缓动动画、滚动速度控制,并能与动画库(如 GSAP)结合使用。
核心作用:
- 平滑滚动:消除浏览器默认滚动的生硬感。
- 性能优化:基于
requestAnimationFrame
实现,避免滚动卡顿。 - 兼容性:支持现代浏览器(Chrome、Firefox、Safari 等)。
- 扩展性:可与动画库(GSAP、ScrollTrigger)集成,实现复杂滚动动画。
安装
npm i lenis
CDN
<script src="https://cdn.jsdelivr.net/gh/studio-freight/lenis@latest/dist/lenis.min.js"></script>
基础使用
初始化 Lenis
import { ReactLenis, useLenis } from 'lenis/react'
function App() {
const lenis = useLenis(({ scroll }) => {
// called every scroll
})
return (
<ReactLenis root>
{ /* content */ }
</ReactLenis>
)
}
import gsap from 'gsap'
import { ReactLenis } from 'lenis/react'
import { useEffect, useRef } from 'react'
function App() {
const lenisRef = useRef()
useEffect(() => {
function update(time) {
lenisRef.current?.lenis?.raf(time * 1000)
}
gsap.ticker.add(update)
return () => gsap.ticker.remove(update)
}, [])
return (
<ReactLenis options={{ autoRaf: false }} ref={lenisRef}>
{ /* content */ }
</ReactLenis>
)
}
监听滚动事件
lenis.on('scroll', (e) => {
console.log('当前滚动位置:', e.scroll);
});
控制滚动行为
// 滚动到指定位置
lenis.scrollTo(1000); // 像素值
lenis.scrollTo('#section-2'); // 元素选择器
// 停止滚动
lenis.stop();
// 恢复滚动
lenis.start();