我正在学习GSAP,我想让一些元素在滚动时滑到视图中,我找到了一个GSAP的ScrollTrigger插件。但是,它不起作用。向上滚动时它会滑回来,但是向下滚动时,什么都没有显示。
import { useLayoutEffect, useState } from "react";
import reactLogo from "./assets/react.svg";
import "./App.css";
import gsap from "gsap";
import styled from "styled-components";
import { ScrollTrigger } from "gsap/dist/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);
const Container = styled.div`
height: 4000px;
`;
function App() {
const [count, setCount] = useState(0);
useLayoutEffect(() => {
gsap.from(".box", {
scrollTrigger: {
trigger: ".box",
start: "top center",
end: "bottom center",
scrub: true,
markers: true,
},
x: -1500,
opacity: 0,
});
}, []);
return (
<>
<Container>Hello World</Container>
<div
className="box"
style={{ backgroundColor: "red", width: 300, height: 300 }}
></div>
<Container></Container>
</>
);
}
export default App;
1条答案
按热度按时间9njqaruj1#
我注意到了几个问题:
1.您导入的是常规的gsap模块(很好),但是您导入的是非模块的ScrollTrigger(从/dist/目录)。您应该只从“gsap/ScrollTrigger”导入ScrollTrigger(或者从/dist/导入gsap和ScrollTrigger-只要保持一致即可)。
1.您可能会被React在strict模式下对useLayoutEffect()的双重调用所困扰,这会使“from()”tweens变得混乱。使用gsap.context()很容易解决这个问题,我们强烈推荐在任何React环境中使用gsap.context()。
请在此处阅读有关在React中使用GSAP的文章:https://greensock.com/react
它还演示了如何使用gsap.context()。
如果您仍然有问题,请随时在https://greensock.com/forums的论坛上发布,并附上一个最小的演示,我们很乐意看一看并回答任何与GSAP相关的问题。
补间快乐!