关于 implement_lenis_scroll
为 React 或 Next.js 项目添加 Lenis 平滑滚动的实现指南,面向前端开发者。内容涵盖依赖安装、封装组件或 Hook、布局集成,以及滚动恢复和 GSAP ScrollTrigger 配合的注意事项。
主要功能
- 01安装 Lenis 依赖
- 02封装可复用组件或 Hook
- 03集成到 Next.js 布局
- 04检查滚动恢复行为
- 05配合 GSAP ScrollTrigger 更新
适用场景
- 01为 React 应用加入平滑滚动
- 02在 Next.js App Router 中接入 Lenis
- 03将 Lenis 与 GSAP ScrollTrigger 配合使用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jerrar670/ surf-website --skill implement_lenis_scroll安装后在 Claude Code 中输入/implement_lenis_scroll确认已加载。
详细介绍
实现 Lenis 平滑滚动
本技能将指导你使用 @studio-freight/lenis(或较新的 lenis 包)为 React/Next.js 应用添加丝滑的平滑滚动效果。
前提条件
- 一个 React 或 Next.js 项目。
步骤
1. 安装依赖
安装 Lenis 包。
npm install lenis
# OR depending on version preference
npm install @studio-freight/lenis
2. 创建 Lenis Hook/组件
最好将 Lenis 封装在可复用的组件或 Hook 中。
选项 A:全局组件(推荐用于 Next.js App Router)
创建 src/lib/lenis.ts 或 src/components/SmoothScroll.tsx。
// src/components/SmoothScroll.tsx
'use client'
import { ReactNode, useEffect } from 'react'
import Lenis from 'lenis'
export default function SmoothScroll({ children }: { children: ReactNode }) {
useEffect(() => {
const lenis = new Lenis({
duration: 1.2,
easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
orientation: 'vertical',
gestureOrientation: 'vertical',
smoothWheel: true,
})
function raf(time: number) {
lenis.raf(time)
requestAnimationFrame(raf)
}
requestAnimationFrame(raf)
return () => {
lenis.destroy()
}
}, [])
return <>{children}</>
}
3. 集成到布局中
使用该组件包裹主应用或布局内容。
Next.js App Router(layout.tsx):
import SmoothScroll from '@/components/SmoothScroll'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<SmoothScroll>
{children}
</SmoothScroll>
</body>
</html>
)
}
最佳实践
- 性能:确保优化
requestAnimationFrame。 - 滚动恢复:Lenis 通常会处理此问题,但请确认 Next.js 中的
scrollRestoration是否按预期工作。 - GSAP 集成:如果使用 ScrollTrigger,请确保在 Lenis 滚动时更新 ScrollTrigger。
// Inside useEffect // lenis.on('scroll', ScrollTrigger.update) // gsap.ticker.add((time)=>{lenis.raf(time * 1000)}) // gsap.ticker.lagSmoothing(0)
评论
支持 Markdown