「threejs」这样的滚动效果该如何实现?

练习两年半,终会结出果实

前因

某一天我在刷抖音时,看到一个UI设计师分享了一个好看的网页滚动动效设计。那种飘逸流畅的动画效果立刻抓住了我的眼球,我脑海里立刻开始想象用代码如何实现这个效果。

于是我把设计师的视频保存下来研究,反复琢磨每个动画细节需要哪些技术来配合。随后我开工码代码,一个个函数、一个个模块地构建起这个动效。在磨合调试的过程中,我时而眉头紧锁,时而按捺不住兴奋的心情。

经常关注优秀的设计作品,尝试用代码实现,这样不仅可以增强自己的编程能力,也可以从中获取乐趣。这种从设计到编码的过程,就像一个创造的闭环。

很高兴可以通过编程让虚拟的代码世界连接起这个美好的现实世界。

设计相关(Figma+dora)

感谢"设计师Cc"提供的稿子

戳这里。对Dora工具有大致了解后,已经大致实现思路,想用代码实现的关键是:滚动 + 关键帧动画

预览

源码🚀 codesandbox

实现

技术选型

3d模型展示:

  1. @react-three/fiber: 流行的threejs React 封装
  2. @react-three/drei: threejs开发的辅助工具

动画库:

  1. GSAP:N逼,很全面的动画库
  2. ScrollTriggerGSAP滚动动画插件

动画实现

🎯 关键代码

请先了解 Gsap Timeline 动画配置相关内容,请仔细查看官方示例,体会时间线的妙用。

思路:将滚动插件与时间线动画相关联,然后就是划分每个时间段该做的动画,比如:0~2s (旋转+移动),2~3s (旋转+...),其实这个过程就类似于Dora3d网页动效工具在时间轴上打关键帧的过程。

结尾

❤️各位大佬,一键三连下吧,感谢❤️

相关推荐
codingWhat20 分钟前
uniapp 多地区、多平台、多环境打包方案
前端·架构·node.js
HelloReader23 分钟前
从 Tauri 2.0 Beta 升级到 2.0 Release Candidate Capabilities 权限前缀与内置 Dev Server 网络策略变
前端
只与明月听1 小时前
RAG深入学习之Chunk
前端·人工智能·python
一枚前端小姐姐1 小时前
低代码平台表单设计系统架构分析(实战一)
前端·低代码·架构
HelloReader1 小时前
Tauri 1.0 升级到 Tauri 2.0从“能跑”到“跑得稳”的迁移实战指南(含移动端准备、配置重构、插件化 API、权限系统)
前端
JunjunZ2 小时前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
_Eleven2 小时前
React 19 深度解析:Actions 与 use API 源码揭秘
前端
_AaronWong2 小时前
Vue3+Element Plus 通用表格组件封装与使用实践
前端·javascript·vue.js
前端西瓜哥2 小时前
图形编辑器开发:文字排版如何实现自动换行?
前端
全栈老石3 小时前
手写一个无限画布 #3:如何在Canvas 层上建立事件体系
前端·javascript·canvas