「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网页动效工具在时间轴上打关键帧的过程。

结尾

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

相关推荐
Bigger11 分钟前
第三章:我是如何剖析 Claude Code 工具系统与命令执行机制的
前端·claude·源码阅读
GISer_Jing18 分钟前
告别手搓架构图!Excalidraw+AI Skills 高效绘制手绘风技术图
前端·人工智能·react.js
jiayong2320 分钟前
第 7 课:第三轮真实重构,拆出新增任务弹窗
服务器·前端·重构
钛态20 分钟前
前端WebSocket实时通信:别再用轮询了!
前端·vue·react·web
爱学习的程序媛23 分钟前
浏览器内核揭秘:JavaScript 和 UI 的“主线程争夺战”
前端·性能优化·浏览器·web
你挚爱的强哥25 分钟前
欺骗加载进度条,应用于无法监听接口数据传输进度的情况
前端·javascript·html
zhensherlock26 分钟前
Protocol Launcher 系列:Mail Assistant 轻松发送 HTML 邮件
前端·javascript·typescript·node.js·html·github·js
恒本银河+27 分钟前
基于MQTT+NFC标签项目开发教程
前端·javascript·nfc标签
吴声子夜歌34 分钟前
ES6——异步操作和async函数详解
前端·ecmascript·es6
小小小米粒1 小时前
生命周期 = Vue 实例从创建 → 挂载 → 更新 → 销毁的全过程钩子函数computed = 基于依赖缓存的计算属性
前端·javascript·vue.js