Abstract background

8篇文章

在 Next.js 14 App Router 中实现页面切换的动画效果

在 React 中,由于缺乏组件卸载的生命周期钩子,实现元素退出动画较为困难。通常使用 Framer Motion 的 <AnimatePresence> 组件来包裹需要动画的组件以实现此功能。在 Next.js 中,虽然 Page Router 可以正常使用此方法,但 App Router 由于存在 bug,无法正确实现退出动画。解决这一问题的常见方法包括:1) 在路由切换时延迟 DOM 卸载,直到动画播放完毕;2) 修改所有 <Link> 的逻辑,先阻止跳转,动画结束后再通过 router.push() 触发跳转。然而,方法 2 不适用于浏览器前进 / 后退键触发的路由切换。

针对 Next.js 13 中 App Router 的问题,GitHub 上的 issue (vercel/next.js/issues/49279) 描述了在共享布局动画中出现的多个场景无法正常工作的情况,主要是因为 OuterLayoutRouter 组件的插入导致布局组件无法提供正确的退出动画。Stack Overflow 上的一个帖子提出了一个可行的解决方案,通过调整 Next.js 的渲染堆栈或公开导航开始时的 API 事件来解决。

具体的解决方案涉及创建一个 FrozenRouter 组件来保持页面切换过程中的上下文持久化,并使用 PageTransitionEffect 组件处理页面切换动画。此方法已在 Next.js 14.2.2 版本中验证有效。此外,有人基于此原理开发了 mekuri 库,进一步封装了这一解决方案,但其具体效果尚需测试。

Next.js  App Router  路由动画  Framer Motion  Page Transition  Layout Transition  页面切换动画  mekuri  React  HTML  CSS  Bug  
2024-05-30

填坑中…

Next.js 14 照片相册的实现与优化

React  Next.js  HTML  CSS  
2024-05-24

填坑中…

在 Windows 浏览器中实现 macOS 风格的滚动条

React  Next.js  HTML  CSS  
2024-05-15
cover image

《让子弹飞》“剧情梗概”

《让子弹飞》是一部由姜文执导并主演的中国电影,融合了动作、喜剧和黑色幽默的元素。电影的背景设定在20世纪20年代的中国,讲述了一位劫匪张牧之(姜文饰)和一位腐败的县长黄四郎(周润发饰)之间的斗争。

故事开始于张牧之劫持了一列火车,并遇到了前县长马邦德(葛优饰)。马邦德原本打算到鹅城上任新县长,但在被劫后,他提议张牧之冒充县长,以便一起从鹅城中捞取好处。张牧之同意了这个提议,并带着自己的兄弟们前往鹅城。

在鹅城,张牧之发现镇上被黄四郎所控制,百姓生活在压迫之中。黄四郎是一个权力至上的人物,利用各种手段来维持自己的地位和利益。他与张牧之之间开始了一系列的明争暗斗,黄四郎试图用金钱、暴力和计谋来打压张牧之,但张牧之和他的团队并不轻易屈服。

随着剧情的推进,张牧之用智慧和勇气逐步瓦解了黄四郎的权力结构。他不仅揭露了黄四郎的恶行,还赢得了鹅城百姓的信任和支持。最终,张牧之通过一场大规模的对抗,彻底击败了黄四郎,解放了鹅城的百姓。

电影通过张牧之与黄四郎之间的对决,探讨了权力、正义与民众之间的关系。姜文通过夸张的手法和幽默的表现,讽刺了社会中的腐败与不公。同时,电影中的动作场面和精彩对白也为观众带来了强烈的视觉和听觉冲击,使其成为一部兼具深度与娱乐性的经典作品。

让子弹飞  姜文  申遗  鹅城  张麻子  
2023-05-30