You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REACT集成GSAP实现滚动效果时页面无输出该如何解决?

React结合GSAP实现滚动动画的问题修复

核心问题点

  • 配置键名错误:GSAP时间线的滚动触发器配置需要小写开头的scrollTrigger,你代码里写成了大写开头的ScrollTrigger,导致配置完全不生效
  • 缺少3D上下文:你使用了translateZ变换,但父容器没有设置perspective透视属性,3D变换效果无法正常渲染,图片会全部重叠不可见
  • 滚动高度不足:pin固定#ImgWrapper后需要足够的滚动高度触发动画,你当前代码没有给外层容器设置足够高度,滚动条无法触发,动画自然不会运行
  • 动画逻辑错误:你所有to动画的时间位置都设为0,相当于所有变换在初始化时就执行完毕,没有和滚动进度绑定的变化过程,看不到滚动动效
  • 事件配置错误:onMouseEnter、onMouseOut不是ScrollTrigger支持的配置项,写在这里不会生效,需要绑定到对应DOM元素的原生事件上

修复后的代码示例

JSX部分

import React, { useRef, useEffect } from 'react';
import './App.css';
import './components/Gsap.css'
import { gsap } from 'gsap';
import { ScrollTrigger } from 'gsap/ScrollTrigger';
import yash1 from './components/yash1.png';
import yash2 from './components/yash2.png';
import yash3 from './components/yash3.png';
import manan1 from './components/manan1.png';
import manan2 from './components/manan2.png';
import ankit1 from './components/ankit1.png';
import ankit2 from './components/ankit2.png';
import ankit3 from './components/ankit3.png';

function App() {
  gsap.registerPlugin(ScrollTrigger)
  const ref = useRef(null);

  useEffect(() => {
    const element = ref.current
    if(!element) return
    // 先给所有图片设置初始translateZ为0
    gsap.set('#ImgWrapper img', { z: 0 })
    gsap.timeline({
        scrollTrigger: {
            trigger: "#ImgWrapper",
            start: "0% 0%",
            end: "200% 0%", // 延长结束位置增加滚动距离
            pin: "#ImgWrapper",
            scrub: 1, // 调整scrub值让滚动跟随更流畅
        }   
    })
    // 滚动时逐步提升各图片的translateZ值
    .to('#ImgWrapper #img8', { z: 5500 }, 0)
    .to('#ImgWrapper #img7', { z: 4500 }, 0)
    .to('#ImgWrapper #img6', { z: 3700 }, 0)
    .to('#ImgWrapper #img5', { z: 3100 }, 0)
    .to('#ImgWrapper #img4', { z: 2800 }, 0)
    .to('#ImgWrapper #img3', { z: 2600 }, 0)
    .to('#ImgWrapper #img2', { z: 2400 }, 0)
    .to('#ImgWrapper #img1', { z: 2200 }, 0)
    
  }, [])

  return (
    <div className="App" ref = {ref} >
      <div id="wrapper">
          <h1>Unusual Imaginative<br /> <span>GSAP Scroll Effect</span></h1>
          <p>Scroll Down</p>
      </div>
      <div id="ImgWrapper">
          <img id = "img1" src = { yash1 } alt = '' />
          <img id = "img2" src = { yash2 } alt = '' />
          <img id = "img3" src = { yash3 } alt = '' />
          <img id = "img4" src = { manan1 } alt = '' />
          <img id = "img5" src = { manan2 } alt = '' />
          <img id = "img6" src = { ankit1 } alt = '' />
          <img id = "img7" src = { ankit2 } alt = '' />
          <img id = 'img8' src = { ankit3 } alt = '' />
      </div>
    </div>
  );
}

export default App;

需要补充的CSS配置

/* 给App容器加足够高度和透视 */
.App {
  min-height: 300vh; /* 三倍视口高度保证足够滚动距离 */
  background-color: #fff;
}
#ImgWrapper {
  perspective: 6000px; /* 透视属性开启3D上下文 */
  width: 100vw;
  height: 100vh;
  position: relative;
  overflow: hidden;
}
#ImgWrapper img {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  max-width: 80%;
  max-height: 80%;
  object-fit: contain;
}

内容的提问来源于stack exchange,提问作者user11464857

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:42:00