当前位置: 首页 > article >正文

React+GSAP实战:5种酷炫滚动动画效果完整代码分享(含ScrollTrigger配置)

ReactGSAP实战5种酷炫滚动动画效果完整代码分享含ScrollTrigger配置在现代Web开发中流畅的滚动动画已经成为提升用户体验的关键因素。作为前端开发者我们经常需要实现各种吸引眼球的滚动效果从简单的元素渐显到复杂的3D视差场景。本文将分享5种基于React和GSAP的高级滚动动画实现方案每种方案都附带完整代码和ScrollTrigger的精细调优技巧。1. 视差滚动效果打造深度沉浸感视差滚动通过让背景和前景元素以不同速度移动创造出令人印象深刻的3D深度效果。这种技术在单页应用和产品展示页中特别受欢迎。import { useRef } from react import { gsap } from gsap import { useGSAP } from gsap/react import { ScrollTrigger } from gsap/ScrollTrigger gsap.registerPlugin(useGSAP, ScrollTrigger) export default function ParallaxDemo() { const containerRef useRef() const layersRef useRef([]) useGSAP(() { layersRef.current.forEach((layer, index) { const speed 0.5 (index * 0.1) // 每层速度递增 gsap.to(layer, { y: -(window.innerHeight * speed), ease: none, scrollTrigger: { trigger: containerRef.current, start: top top, end: bottom bottom, scrub: 1, markers: false } }) }) }, []) return ( div ref{containerRef} classNamerelative h-[300vh] overflow-hidden {[1, 2, 3, 4].map((layer, index) ( div key{index} ref{el layersRef.current[index] el} className{absolute inset-0 bg-cover bg-center layer-${index}} style{{ backgroundImage: url(/images/layer-${index}.jpg), zIndex: index, scale: 1 (index * 0.1) }} / ))} /div ) }关键参数调优技巧scrub: 1使动画与滚动位置平滑同步速度系数speed根据层级深度递增scale属性增强3D透视感注意视差效果在移动设备上可能性能消耗较大建议使用will-change: transform优化2. 元素渐显序列动画当用户滚动到特定区域时让元素按顺序优雅地出现这种效果非常适合产品特性展示或团队成员介绍。import { gsap } from gsap import { useGSAP } from gsap/react import { ScrollTrigger } from gsap/ScrollTrigger function StaggeredReveal() { const items [ { title: 创新设计, icon: }, { title: 极致性能, icon: ⚡ }, { title: 安全保障, icon: ️ }, { title: 无缝集成, icon: } ] useGSAP(() { gsap.utils.toArray(.feature-item).forEach(item { gsap.from(item, { opacity: 0, y: 50, duration: 0.8, scrollTrigger: { trigger: item, start: top 80%, toggleActions: play none none none } }) }) }, []) return ( div classNamepy-20 px-4 max-w-4xl mx-auto h2 classNametext-3xl font-bold mb-12核心特性/h2 div classNamegrid md:grid-cols-2 gap-8 {items.map((item, i) ( div key{i} classNamefeature-item opacity-0 p-6 rounded-lg bg-white shadow-lg style{{ transitionDelay: ${i * 0.1}s }} div classNametext-4xl mb-4{item.icon}/div h3 classNametext-xl font-semibold{item.title}/h3 /div ))} /div /div ) }优化要点使用toggleActions控制动画触发行为通过transitionDelay创建序列效果start: top 80%确保元素进入视口时触发3. 3D卡片旋转效果结合滚动位置控制3D旋转可以为产品展示添加令人惊艳的交互维度。import { useRef } from react import { gsap } from gsap import { useGSAP } from gsap/react import { ScrollTrigger } from gsap/ScrollTrigger export default function Card3DRotate() { const cardRef useRef() useGSAP(() { gsap.to(cardRef.current, { rotateY: 360, rotateX: 15, scrollTrigger: { trigger: cardRef.current, start: top center, end: bottom center, scrub: true, markers: false } }) }, []) return ( div classNamemin-h-[150vh] flex items-center justify-center p-4 div ref{cardRef} classNamew-80 h-96 bg-gradient-to-br from-purple-500 to-blue-600 rounded-xl shadow-2xl p-6 flex flex-col justify-between transform-style-preserve-3d style{{ transformPerspective: 1000 }} h3 classNametext-2xl font-bold text-white高级功能/h3 p classNametext-white/90体验前所未有的3D交互效果/p /div /div ) }技术细节transform-style-preserve-3d启用3D变换空间transformPerspective设置透视距离scrub: true实现平滑的滚动驱动动画4. 滚动进度指示动画在长页面中显示滚动进度不仅能提升用户体验还能成为视觉设计的亮点。import { useRef } from react import { gsap } from gsap import { useGSAP } from gsap/react import { ScrollTrigger } from gsap/ScrollTrigger export default function ScrollIndicator() { const progressRef useRef() const circleRef useRef() useGSAP(() { ScrollTrigger.create({ trigger: body, start: top top, end: bottom bottom, onUpdate: self { const progress self.progress gsap.to(progressRef.current, { scaleX: progress, duration: 0.3 }) gsap.to(circleRef.current, { rotate: progress * 360, duration: 0.5 }) } }) }, []) return ( div classNamefixed top-4 left-4 z-50 flex items-center gap-3 div classNamew-32 h-2 bg-gray-200 rounded-full overflow-hidden div ref{progressRef} classNameh-full bg-blue-500 origin-left scale-x-0 / /div div classNamerelative w-8 h-8 svg ref{circleRef} viewBox0 0 32 32 classNamew-full h-full circle cx16 cy16 r14 fillnone stroke#3b82f6 strokeWidth4/ /svg /div /div ) }进阶技巧使用SVG实现平滑的圆形进度onUpdate回调获取实时滚动进度组合多种动画形式增强视觉效果5. 分屏滑动过渡效果这种效果常见于产品展示网站通过滚动在不同内容区块之间创建流畅的过渡。import { useRef } from react import { gsap } from gsap import { useGSAP } from gsap/react import { ScrollTrigger } from gsap/ScrollTrigger export default function SectionSlider() { const sections [ { bg: bg-red-500, title: 创意设计 }, { bg: bg-blue-500, title: 技术实现 }, { bg: bg-green-500, title: 用户体验 }, { bg: bg-yellow-500, title: 市场反馈 } ] const containerRef useRef() const panelsRef useRef([]) useGSAP(() { panelsRef.current.forEach((panel, i) { ScrollTrigger.create({ trigger: panel, start: () i 0 ? top top : top bottom-1, end: bottom top1, pin: true, pinSpacing: false, id: panel-${i} }) }) gsap.utils.toArray(.panel-content).forEach(content { gsap.from(content, { opacity: 0, y: 50, duration: 0.5, scrollTrigger: { trigger: content, start: top 60%, toggleActions: play none none none } }) }) }, []) return ( div ref{containerRef} classNamerelative {sections.map((section, i) ( div key{i} ref{el panelsRef.current[i] el} className{${section.bg} h-screen w-full relative} div classNamepanel-content opacity-0 absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-center h2 classNametext-5xl font-bold text-white mb-6{section.title}/h2 /div /div ))} /div ) }核心配置pin: true固定当前面板直到下一个面板进入动态计算start位置确保无缝衔接嵌套动画增强过渡效果6. ScrollTrigger高级配置指南要真正掌握GSAP的滚动动画必须深入理解ScrollTrigger的核心配置参数。下面是一些关键参数的详细解析参数类型说明推荐值triggerString/Element触发动画的元素通常为动画元素的父容器startString动画开始位置top center或top bottom-100endString动画结束位置bottom top或500scrubBoolean/Number是否平滑跟随滚动true或1(平滑度)pinBoolean是否固定元素true用于分屏效果markersBoolean显示调试标记开发时true生产环境falsetoggleActionsString滚动行为控制play pause resume reset常见问题解决方案动画闪烁问题gsap.set(.animated-element, { willChange: transform })移动端性能优化ScrollTrigger.config({ autoRefreshEvents: visibilitychange,DOMContentLoaded,load })响应式布局适配ScrollTrigger.addEventListener(refreshInit, () { // 在窗口大小变化时重新计算位置 })在实际项目中我经常使用以下模式来组织复杂的滚动动画function setupAnimations() { const tl gsap.timeline({ scrollTrigger: { trigger: .section, start: top center, end: bottom center, scrub: 1, markers: false } }) tl.from(.element-1, { x: -100, opacity: 0 }) .from(.element-2, { y: 50, opacity: 0 }, 0.2) .from(.element-3, { scale: 0.5, opacity: 0 }, 0.4) }这种时间线(Timeline)与ScrollTrigger的组合方式可以创建出复杂但易于维护的动画序列。

相关文章:

React+GSAP实战:5种酷炫滚动动画效果完整代码分享(含ScrollTrigger配置)

ReactGSAP实战:5种酷炫滚动动画效果完整代码分享(含ScrollTrigger配置) 在现代Web开发中,流畅的滚动动画已经成为提升用户体验的关键因素。作为前端开发者,我们经常需要实现各种吸引眼球的滚动效果,从简单的…...

TPAMI 2026 | 跨十大数据集验证,PoundNet重新审视AI图像检测范式

随着 AI 生成图像技术快速演进,伪造内容在网络传播风险持续上升,高鲁棒性检测技术因此成为学界与产业界关注的关键问题。然而,现有不少方法过于追求单一数据集上的短期收益,往往仅围绕“真/假”二分类目标对大规模预训练模型进行专…...

If、switch选择结构

if单选结构package 选择结构;import java.util.Scanner;public class If单选择结构 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println("请输入内容:");String sscanner.nextLine();//equals&#x…...

Leather Dress Collection 角色扮演效果:模拟不同风格的IT技术面试官

Leather Dress Collection 角色扮演效果:模拟不同风格的IT技术面试官 最近在玩一个挺有意思的AI工具,叫Leather Dress Collection。名字听起来有点怪,但它有个功能让我眼前一亮:角色扮演。你可以让它扮演各种角色,并且…...

AutoDL部署大模型后,除了Chat:手把手教你用本地API接口玩转文档总结、代码生成和智能客服

AutoDL部署大模型后,除了Chat:手把手教你用本地API接口玩转文档总结、代码生成和智能客服 当你已经在AutoDL上成功部署了大语言模型,并验证了基础的聊天功能后,是否思考过如何将这些能力真正融入日常工作流?本文将带你…...

多平台资源下载解决方案:res-downloader实现数字内容自由获取

多平台资源下载解决方案:res-downloader实现数字内容自由获取 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在数…...

告别虚拟机!Windows WSL2+GNU Radio玩转HackRF-One无线接收(避坑指南)

告别虚拟机!Windows WSL2GNU Radio玩转HackRF-One无线接收(避坑指南) 在软件定义无线电(SDR)领域,HackRF-One因其开源设计和亲民价格成为入门首选。然而传统虚拟机方案常因性能损耗、驱动兼容性问题让新手望…...

FastGPT vs Dify vs Coze:哪个AI平台更适合你的项目需求?(2024最新对比)

FastGPT vs Dify vs Coze:2024年AI开发平台深度选型指南 当我们需要将大语言模型整合到业务系统中时,总会面临平台选择的难题。去年我在为一家金融科技公司搭建智能客服系统时,曾花费两周时间深度测试了市面上主流的三个AI开发平台——FastGP…...

springboot+vue基于web的宠物商城领养网站的设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析技术实现要点特色功能扩展安全与性能项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 用户模块 注册与登录&#…...

别再手动刷新了!SAP ALV中利用change事件与modify_cell实现智能数据同步

SAP ALV开发进阶:巧用change事件与modify_cell构建智能数据联动体系 在SAP前端开发领域,ALV(ABAP List Viewer)作为最常用的数据展示控件,其交互体验直接影响用户操作效率。传统开发模式中,当用户修改某个单…...

5个认知重构,收割你的补偿性Offer

春招反杀指南当别人还在为秋招失利懊悔时,聪明人已经完成了思维系统的彻底升级秋招的硝烟尚未散尽,春招的号角已经吹响。这不是简单的“第二轮机会”,而是认知层面的降维打击战。那些在秋招中凭借简历光环轻松通关的路径已然失效,…...

从自动驾驶到AR眼镜:聊聊PSMNet这个双目立体匹配的‘老将’现在还能怎么用

PSMNet在2024年的技术重生:从经典立体匹配到轻量化落地的实战指南 六年前,当PSMNet在CVPR 2018上首次亮相时,其金字塔池化模块和堆叠沙漏3D CNN架构刷新了KITTI榜单的精度记录。如今,在Transformer大行其道的时代,这个…...

LVGL V8项目实战:手把手教你用CLion配置CMake,集成Gui Guider生成的UI文件(含避坑指南)

LVGL V8项目实战:CLion与CMake深度集成Gui Guider UI文件的完整指南 当你在嵌入式GUI开发中频繁往返于设计工具与代码编辑器之间时,是否经历过这样的困境:在Gui Guider中精心设计的界面,移植到LVGL项目后却遭遇编译错误、资源路径…...

Z-Image-Turbo-辉夜巫女数据预处理实战:模拟VLOOKUP实现提示词与风格模板匹配

Z-Image-Turbo-辉夜巫女数据预处理实战:模拟VLOOKUP实现提示词与风格模板匹配 你有没有遇到过这样的烦恼?每次用AI画图,想生成一个“赛博朋克”风格的图片,都得重新回忆或者翻找之前写好的那一长串复杂的提示词。或者团队里每个人…...

在树莓派4B上编译运行Speedtest-CLI:手把手解决curl和expat库的交叉编译难题

树莓派4B实战:从零构建Speedtest-CLI测速工具全流程指南 1. 环境准备与工具链配置 在树莓派4B上构建Speedtest-CLI测速工具,首先需要搭建完整的交叉编译环境。不同于x86平台的直接编译,ARM架构下的开发需要特别注意工具链的选择和配置。 必备…...

实战指南:基于快马平台生成Spring Boot电商后端并部署于腾讯云龙虾

最近在做一个电商平台的后端开发项目,需要快速搭建一套完整的API服务。考虑到腾讯云龙虾服务器性价比高,特别适合中小型Web应用部署,我决定用Spring Boot框架来实现。整个过程在InsCode(快马)平台上完成,从代码生成到部署上线一气…...

foobar2000界面美化终极指南:3步打造你的专属音乐播放器

foobar2000界面美化终极指南:3步打造你的专属音乐播放器 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 还在为foobar2000那套单调乏味的默认界面感到困扰吗?今天我要为你介绍…...

Git子模块更新报错?手把手教你解决‘Unable to find origin/master revision‘问题

Git子模块更新报错深度解析:从原理到实战解决方案 1. 问题现象与核心原因分析 当你执行git submodule update --remote命令时,突然遇到fatal: Unable to find current origin/master revision in submodule path错误提示,这种场景在团队协作…...

比Jenkins轻量10倍!用Gitea Actions搭建内网自动化部署的完整踩坑记录

企业级内网CI/CD革命:Gitea Actions轻量化实战指南 在当今快节奏的软件开发环境中,持续集成与持续部署(CI/CD)已成为企业提升交付效率的关键。然而,传统解决方案如Jenkins往往伴随着沉重的资源消耗和复杂的配置流程,让许多中小团队…...

【Coze】从零开始:AI Agent开发平台的入门指南

1. Coze平台初体验:零基础也能玩转AI开发 第一次接触Coze时,我完全被它的易用性震惊了。作为一个没有任何编程背景的市场专员,我居然在半小时内就做出了能自动回复客户咨询的AI助手。这个由字节跳动开发的AI Agent开发平台,真正实…...

别再踩坑了!KubeKey离线安装K8s v1.26.12时,containerd镜像拉取失败的完整避坑指南

KubeKey离线部署K8s集群:containerd镜像拉取全流程避坑手册 第一次用KubeKey离线部署Kubernetes集群时,containerd镜像拉取失败的问题让我折腾了大半天。看着部署日志里反复出现的证书错误提示,才意识到离线环境下的镜像仓库配置远比想象中复…...

XposedRimetHelper:如何优雅解决远程办公的定位打卡难题?[特殊字符]

XposedRimetHelper:如何优雅解决远程办公的定位打卡难题?🚀 【免费下载链接】XposedRimetHelper Xposed 钉钉辅助模块,暂时实现模拟位置。 项目地址: https://gitcode.com/gh_mirrors/xp/XposedRimetHelper 面对企业日益严…...

pybind11进阶指南:如何高效封装C++类供Python调用(附常见问题解决方案)

pybind11进阶指南:如何高效封装C类供Python调用(附常见问题解决方案) 在当今高性能计算和科学计算领域,C与Python的结合已成为开发者工具箱中不可或缺的组合。C提供底层性能优势,而Python则以其简洁语法和丰富生态著称…...

OpCore-Simplify:从3天手动调试到3步智能配置,黑苹果配置的自动化革命

OpCore-Simplify:从3天手动调试到3步智能配置,黑苹果配置的自动化革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 想象一下…...

GitHub开源项目分享:SenseVoice-Small模型微调与领域适配工具链

GitHub开源项目分享:SenseVoice-Small模型微调与领域适配工具链 最近在语音识别领域,一个挺有意思的现象是,很多通用模型虽然能力很强,但一遇到专业领域的对话,比如医生讨论病例、律师分析法条,准确率就容…...

OneAPI安全增强指南:令牌过期策略、兑换码批量发放、用户邀请奖励机制详解

OneAPI安全增强指南:令牌过期策略、兑换码批量发放、用户邀请奖励机制详解 1. 引言:为什么你需要一个统一的大模型网关? 如果你正在使用或者管理多个大模型服务,比如 OpenAI 的 ChatGPT、百度的文心一言、阿里的通义千问&#x…...

Zabbix 6.0部署避坑指南:为什么你的Ubuntu安装总卡在数据库初始化这一步?

Zabbix 6.0部署避坑指南:为什么你的Ubuntu安装总卡在数据库初始化这一步? 如果你正在Ubuntu上部署Zabbix 6.0,却反复在数据库初始化这一步失败,这篇文章就是为你准备的。不同于常规的安装教程,我们将聚焦于那些看似简…...

VxLAN网络如何“破圈”?聊聊Type5路由在云网融合中的真实应用场景

VxLAN Type5路由:云网融合时代的智能连接引擎 在数字化转型浪潮中,企业网络架构正经历着从传统三层架构向云原生网络的跃迁。VxLAN作为新一代网络虚拟化技术的代表,其Type5路由功能正在成为打通云网边界的关键推手。想象一下这样的场景&#…...

ESP32S3-Cam + MPU6050 DMP移植避坑实录:从编译报错到姿态数据稳定输出的完整流程

ESP32S3-Cam与MPU6050 DMP移植实战:从编译报错到稳定姿态解算的全流程解析 当ESP32S3-Cam遇上MPU6050的DMP(数字运动处理器)功能,本应是物联网项目中实现低成本姿态检测的完美组合。但实际移植过程中,开发者往往会遭遇…...

pandas API on Spark 与 pandas / PySpark 互转指南

1. 为什么会有互转需求 pandas API on Spark 的定位很特殊:它既想保留 pandas 的使用体验,又建立在 Spark 的分布式执行之上。因此开发时常见的场景有三种: 已经有 pandas 代码,想迁移到分布式环境已经在用 PySpark DataFrame&…...