GSAP ScrollTrigger не работает с моим ящиком

Я пытаюсь изучить GSAP и хочу, чтобы некоторые элементы отображались при прокрутке, и я нашел плагин ScrollTrigger для GSAP. Однако это не работает. При прокрутке вверх он скользит назад, а при прокрутке вниз ничего не появляется.

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;

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я заметил несколько проблем:

  1. Вы импортируете обычный модуль gsap (хорошо), но затем вы импортируете немодульный ScrollTrigger (из каталога /dist/). Вы должны просто импортировать ScrollTrigger из "gsap/ScrollTrigger" (или импортировать и gsap, и ScrollTrigger из /dist/ - просто будьте последовательны)
  2. Вероятно, вас укусил двойной вызов React useLayoutEffect() в строгом режиме, который путается с анимацией «from()». Это легко решить с помощью gsap.context(), который мы НАСТОЯТЕЛЬНО рекомендуем в любой среде React.

Пожалуйста, прочитайте статью об использовании GSAP в React здесь: https://greensock.com/react

Он также иллюстрирует, как использовать gsap.context().

Если у вас все еще есть проблемы, не стесняйтесь публиковать сообщения на форумах по адресу https://greensock.com/forums вместе с минимальной демонстрацией, и мы будем рады взглянуть и ответить на любые вопросы, связанные с GSAP. .

Счастливого твининга!

отлично, strictMode сделал это!

mikoo 18.11.2022 05:54

Другие вопросы по теме