面试题答案
一键面试关键代码片段
- 安装依赖:假设已安装GSAP,若项目中还未安装
next/link
相关依赖,确保next
已安装。 - 创建动画函数:在项目合适位置(如
lib/animation.js
)创建GSAP动画函数。import gsap from 'gsap'; const pageTransition = () => { const tl = gsap.timeline(); tl.to('body', { opacity: 0, duration: 0.3 }); tl.to('body', { opacity: 1, duration: 0.3 }, '-=0.3'); return tl; }; export default pageTransition;
- 配置Link组件:在页面组件中使用
next/link
并结合动画函数。import Link from 'next/link'; import pageTransition from '../lib/animation'; const HomePage = () => { return ( <div> <Link href="/about" passHref> <a onClick={() => pageTransition().play()}>About</a> </Link> </div> ); }; export default HomePage;
原理阐述
- GSAP动画原理:GSAP(GreenSock Animation Platform)是一个强大的JavaScript动画库。通过
gsap.timeline()
创建一个时间轴对象tl
,tl.to()
方法用于定义动画。这里先将body
元素的opacity
在0.3秒内设置为0,模拟页面淡出效果;然后在同一时间轴上,再将opacity
在0.3秒内设置为1,模拟页面淡入效果。'-=0.3'
表示淡入效果与淡出效果部分重叠,使过渡更平滑。 - Link组件与动画结合原理:
next/link
组件用于在Next.js项目中实现页面间导航。passHref
属性使<a>
标签能够传递href
属性。通过在<a>
标签的onClick
事件中调用GSAP动画函数pageTransition().play()
,当用户点击链接时,先执行GSAP定义的页面过渡动画,然后再进行页面切换,从而实现平滑过渡效果。