Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Хочу сделать плавную прокрутку используя gsap + locomotiveScroll на базе react + next. но столкнулся с проблемой?

видимо у меня не очень хорошо получается найти высоту всего блока страницы, и когда ставлю маркеры то вся страница ломается
ПрограммированиеСайты+2
Дмитрий Казенин
  ·   · 1,9 K
Да, я зарабатываю на ✺Толоке 👇  · 29 мар 2023  · toloka.yandex.ru/promo
Для создания веб-страницы с использованием gsap + locomotiveScroll на базе React + Next, вам необходимо выполнить следующие шаги:
Создайте новый проект Next.js с помощью команды
npx create-next-app
, если вы еще этого не сделали.
Установите необходимые библиотеки, используя команду
npm install gsap locomotive-scroll
в корневой директории проекта.
Создайте новый компонент, который будет содержать вашу веб-страницу. В этом компоненте вы можете использовать все необходимые библиотеки и создать плавную прокрутку.
import React, { useRef, useEffect } from 'react';
import { gsap } from 'gsap';
import ScrollTrigger from 'gsap/ScrollTrigger';
import locomotiveScroll from 'locomotive-scroll';

const Page = () => {
  const containerRef = useRef(null);

  useEffect(() => {
    gsap.registerPlugin(ScrollTrigger);
    const scroll = new locomotiveScroll({
      el: containerRef.current,
      smooth: true,
      smoothMobile: false,
      inertia: 0.75,
      // дополнительные настройки Locomotive Scroll можно добавить здесь
    });
    ScrollTrigger.scrollerProxy(containerRef.current, {
      scrollTop(value) {
        return arguments.length ?
          scroll.scrollTo(value, 0, 0) :
          scroll.scroll.instance.scroll.y;
      },
      getBoundingClientRect() {
        return {top: 0, left: 0, width: window.innerWidth, height: window.innerHeight};
      },
      pinType: containerRef.current.style.transform ? 'transform' : 'fixed'
    });
    ScrollTrigger.addEventListener('refresh', () => scroll.update());
    ScrollTrigger.refresh();
  }, []);

  return (
    <div className="container" ref={containerRef}>
      <div className="content">
        // здесь можно разместить содержимое вашей страницы
      </div>
    </div>
  );
};

export default Page;
Затем вам нужно добавить этот компонент в ваш файл  pages/index.js
(или  pages/index.tsx, если вы используете TypeScript):
import React from 'react';
import Page from '../components/Page';

const Index = () => {
  return (
    <Page />
  );
};

export default Index;
Запустите ваше приложение с помощью команды
npm run dev
и проверьте, работает ли плавная прокрутка.
Обратите внимание, что в этом примере используется глобальный объект  window, поэтому если вы используете серверный рендеринг, вам нужно будет проверить, что этот код выполняется только на клиенте, чтобы избежать ошибок времени выполнения на сервере.
Заработать пару сотен рублей онлайн на Яндекс✺Толока! Регистрируйся.Перейти на toloka.yandex.ru/promo